Udostępnij za pośrednictwem


SUBSTRING (Transact-SQL)

Zwraca część wyrażenia znakowego, binarnego, tekstowego lub obrazowego.Aby uzyskać więcej informacji dotyczących poprawnych typów danych programu SQL Server, które mogą być używane z tą funkcją, zobacz Data Types (Transact-SQL).

Topic link iconKonwencje składni języka Transact-SQL

SUBSTRING ( value_expression ,start_expression , length_expression )

Argumenty

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

  • start_expression
    Jest liczbą całkowitą lub bigint wyrażenie określające, w której uruchomiony zwracane znaki. Jeśli start_expression jest mniejsza niż 1, zwrócony wyrażenie będzie rozpoczynać się od pierwszego znaku, który jest podana w value_expression. W takim przypadek liczbę znaków, które są zwracane jest największą wartość w jednej sumę start_expression i length_expression lub 0. Jeśli start_expression jest większa niż liczba znaków w wyrażeniu wartość zwracana jest wyrażenie o zerowej długości.

  • length_expression
    Jest dodatnią liczbą całkowitą lub bigint wyrażenie określające liczbę znaków z value_expression zostaną zwrócone. Jeśli length_expression jest ujemna, zostanie wygenerowany błąd, i w instrukcja jest zakończona. Jeśli suma start_expression i length_expression jest większa niż liczba znaków w value_expression, początek wyrażenie wartości całkowitej w start_expression jest zwracany.

Zwracane typy

Zwraca dane znakowe, jeśli expression jest jednym z obsługiwanych typów danych znakowych.Zwraca dane binarne, jeśli expression jest jednym z obsługiwanych typów danych binary.Zwracany ciąg jest jest tego samego typu, co podane wyrażenie, oprócz wyjątków wymienionych w tabeli.

Dane są przechowywane w bazie danych i przetwarzania, w porównaniu, posortowane i indeksowania na serwerze jako według czasu UTC.

Zwracany typ

char/varchar/text

varchar

nchar/nvarchar/ntext

nvarchar

binary/varbinary/image

varbinary

Remarks

Wartości dla start_expression i length_expression należy określić liczbę znaków ntext, char, lub varchar typy danych i bajtów text, image, binary, lub varbinary typy danych.

The value_expression must be varchar(max) or varbinary(max) when the start_expression or length_expression contains a value larger than 2147483647.

Uwaga

Poziomy zgodności może mieć wpływ na wartości zwracanych.Aby uzyskać więcej informacji na temat poziomów zgodności zobacz sp_dbcmptlevel (języka Transact-SQL).

Przykłady

A.Użycie funkcji SUBSTRING dla ciągu znaków.

W poniższym przykładzie pokazano, jak uzyskać część ciągu znaków.Ta kwerenda dla tabeli Contact zwraca w pierwszej kolumnie nazwisko, a w drugiej tylko pierwszy inicjał.

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

Here is the result set.

LastName Initial

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

Zwraca bieżący okres aktualizacji.

Zwraca bieżący okres aktualizacji, czyli liczba minut między aktualizacjami dublowanie tabela stanu bazy danych.

(dotyczy wiersze 2)

Poniżej przedstawiono sposób wyświetlania drugim, trzecim i czwartym znaków stała znakowa abcdef.

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

Here is the result set.

x

----------

zestaw CONTEXT_INFO (języka Transact-SQL)

(dotyczy wiersze 1)

B.Kojarzy do 128 bajtów danych binarnych z bieżącej sesja lub połączenia.

Uwaga

Aby uruchomić w poniższych przykładach, należy zainstalować Pubs bazy danych.Aby uzyskać informacje dotyczące sposobu instalowania Pubs bazy danych, zobacz temat Pobieranie Northwind i przykładowe bazy danych pubs.

The following example shows how to return the first 10 characters from each of a text and image data column in the pub_info table of the pubs database.text data is returned as varchar, and image data is returned as 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';

Here is the result set.

Za pomocą funkcja CONTEXT_INFO jest preferowanym sposobem pobierania informacji kontekstu dla bieżącej sesja.

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

1756 0x474946383961E3002500 To jest sa

(dotyczy wiersze 1)

Poniższy przykład przedstawia wynik SUBSTRING w obu text i ntext dane. Po pierwsze, w tym przykładzie zostanie utworzona nowa tabela w pubs bazy danych o nazwie npub_info. Po drugie, w przykładzie zostanie utworzony pr_info kolumna w npub_info Tabela z najpierw 80 znaków pub_info.pr_info kolumna, a następnie dodaje ü jako pierwszy znak. Wreszcie INNER JOIN pobiera wszystkie numery identyfikacyjne Wydawca i SUBSTRING zarówno text i ntext kolumny informacji Wydawca.

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;