Aracılığıyla paylaş


SUBSTRING (Transact-SQL)

Karakter, ikili, metin veya görüntü ifadekısmını verir.Geçerli hakkında daha fazla bilgi için SQL Server , bu işlevkullanılabilir, bkz: veri türleri Veri Türleri (Transact-SQL).

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SUBSTRING ( value_expression , start_expression , length_expression )

Bağımsız değişkenler

  • value_expression
    Is a character, binary, text, ntext, or imageifade.

  • start_expression
    Bir tamsayı olduğundan veya Burada döndürülen karakterler başlatmak belirtenifadebigint. start_expression 1'den daha az, döndürülen ifade belirtilen ilk karakterinde başlar value_expression.Bu durumda, döndürülen karakter sayısı toplamının ya da en büyük değerdir start_expression ve length_expression ya da 0.start_expression Numarasından daha büyük değer ifadekarakterlerden sıfır uzunluklu ifade verdi.

  • length_expression
    Pozitif bir tamsayı olan veya bigintkarakter sayısını belirtenifade value_expression döndürülür.length_expression Olan hata negatif oluşturulur ve deyim sona erdi.Toplamı start_expression ve length_expression karakter sayısından büyük value_expression, bütün değer ifade başında start_expression döndürülür.

Dönüş Türleri

Karakter veri döndürür expression biridir desteklenen karakter veri türleri.İkili veri döndürür expression desteklenen biri olan binary veri türü.Döndürülen dize tablogösterildiği durumlarla belirtilen ifade aynı türüdür.

Belirtilen ifade

Dönüş türü

char/varchar/text

varchar

nchar/nvarchar/ntext

nvarchar

binary/varbinary/image

varbinary

Açıklamalar

Değerleri start_expression ve length_expression için karakter sayısı olarak belirtilmelidir ntext, char, veya varchar veri türleri ve bayt için text, image, binary, veya varbinary veri türü.

value_expression Olması varchar(max) veya varbinary(max) , start_expression veya length_expression 2147483647'den büyük bir değer içeriyor.

Not

Uyumluluk düzeyleri dönüş değerlerini etkiler.Uyumluluk düzeyleri hakkında daha fazla bilgi için bkz: sp_dbcmptlevel (Transact-SQL).

Örnekler

A.Alt DİZE bir karakter dizeile kullanma

Aşağıdaki örnek, karakter dizeyalnızca bir kısmı dönmek gösterilmiştir.Dan Contact tablo, bu sorgu döndürür son ad bir sütun ikinci sütuniçin ilk harfi.

USE AdventureWorks2008R2;
GO
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%'
ORDER BY LastName;

Sonuç kümesi buradadır.

LastName Initial

--------------------------------- -------

Barley R

Barlow B

(2 row(s) affected)

Şöyle saniye görüntülemek üçüncü ve dördüncü karakterlerden dize sabit abcdef.

SELECT x = SUBSTRING('abcdef', 2, 3);

Sonuç kümesi buradadır.

x

----------

bcd

(1 row(s) affected)

B.Alt DİZE metin, ntext ve görüntü verilerini kullanma

Not

Aşağıdaki örneklerde çalıştırmak için yüklemeniz gerekir pubs veritabanı.Nasıl yükleneceği hakkında bilgi için pubs veritabanı Bkz: Northwind ve pubs örnek veritabanları karşıdan yükleniyor.

Aşağıdaki örnek, her biri ilk 10 karakter döndürmek gösterilmiştir bir text ve image veri sütun pub_info tablo pubs veritabanı.textveri olarak döndürülür varchar, ve image olarak veri döndürdü varbinary.

USE pubs;
SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo, 
   SUBSTRING(pr_info, 1, 10) AS pr_info
FROM pub_info
WHERE pub_id = '1756';

Sonuç kümesi buradadır.

pub_id logo pr_info

------ ---------------------- ----------

1756 0x474946383961E3002500 This is sa

(1 row(s) affected)

Aşağıdaki örnek hem alt DİZE etkisini gösterir text ve ntext veri.İlk olarak, bu örnek, yeni bir tablo oluşturur pubs veritabanı adlı npub_info.İkinci olarak, örnek oluşturur pr_info sütun npub_info tablo önce 80 karakter pub_info.pr_info sütun ekler ve bir ü olarak ilk karakter.Son olarak, bir INNER JOIN tüm publisher kimlik numaraları alır ve SUBSTRING her iki text ve ntext publisher bilgileri sütunlar.

IF EXISTS (SELECT table_name FROM INFORMATION_SCHEMA.TABLES 
      WHERE table_name = 'npub_info')
   DROP TABLE npub_info;
GO
-- Create npub_info table in pubs database. Borrowed from instpubs.sql.
USE pubs;
GO
CREATE TABLE npub_info
(
 pub_id         char(4)           NOT NULL
         REFERENCES publishers(pub_id)
         CONSTRAINT UPKCL_npubinfo PRIMARY KEY CLUSTERED,
 pr_info        ntext             NULL
);

GO

-- Fill the pr_info column in npub_info with international data.
RAISERROR('Now at the inserts to pub_info...',0,1);

GO

INSERT npub_info VALUES('0736', N'üThis is sample text data for New Moon Books, publisher 0736 in the pubs database');
INSERT npub_info values('0877', N'üThis is sample text data for Binnet & Hardley, publisher 0877 in the pubs databa');
INSERT npub_info values('1389', N'üThis is sample text data for Algodata Infosystems, publisher 1389 in the pubs da');
INSERT npub_info values('9952', N'üThis is sample text data for Scootney Books, publisher 9952 in the pubs database');
INSERT npub_info values('1622', N'üThis is sample text data for Five Lakes Publishing, publisher 1622 in the pubs d');
INSERT npub_info values('1756', N'üThis is sample text data for Ramona Publishers, publisher 1756 in the pubs datab');
INSERT npub_info values('9901', N'üThis is sample text data for GGG&G, publisher 9901 in the pubs database. GGG&G i');
INSERT npub_info values('9999', N'üThis is sample text data for Lucerne Publishing, publisher 9999 in the pubs data');
GO
-- Join between npub_info and pub_info on pub_id.
SELECT pr.pub_id, SUBSTRING(pr.pr_info, 1, 35) AS pr_info,
   SUBSTRING(npr.pr_info, 1, 35) AS npr_info
FROM pub_info pr INNER JOIN npub_info npr
   ON pr.pub_id = npr.pub_id
ORDER BY pr.pub_id ASC;

Ayrıca bkz.

Başvuru