PARSE (Transact-SQL)

Возвращает результат выражения, преобразованный в требуемый тип данных в SQL Server.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

PARSE ( string_value AS data_type [ USING culture ] )

Аргументы

  • string_value
    Значение nvarchar(4000), представляющее форматированное значение для преобразования в указанный тип данных.

    Значение string_value должно быть допустимым представлением требуемого типа данных, в противном случае инструкция PARSE выдаст ошибку.

  • data_type
    Литеральное значение, представляющее тип данных, запрошенный в качестве для результата.

  • culture
    Дополнительная строка, идентифицирующая культуру, в которой форматируется string_value.

    Если аргумент culture не указан, то используется язык текущего сеанса. Язык может быть задан неявно или явно с использованием инструкции SET LANGUAGE. Значение culture принимает любую культуру, поддерживаемую .NET Framework; его применение не ограничивается языками, явно поддерживаемыми SQL Server. Если аргумент culture недопустим, инструкция PARSE выдаст ошибку.

Типы возвращаемых данных

Возвращает результат выражения, переведенный в требуемый тип данных.

Замечания

Значения NULL, передаваемые в качестве аргументов для PARSE, рассматриваются двумя способами:

  1. Если передается константа NULL, возникает ошибка. Значение NULL не может быть преобразовано в другой тип данных с учетом культуры.

  2. При передаче параметра со значением NULL во время выполнения происходит возврат значения NULL во избежание отмены всего пакета.

Используйте инструкцию PARSE только для преобразования данных из строкового типа в типы даты или времени и числовой тип. Для общих преобразований типов данных продолжайте использовать CAST и CONVERT. Следует учитывать, что разбор строкового значения приводит к некоторой потере производительности.

Для выполнения инструкции PARSE требуется среда CLR платформы .NET Framework.

Данная функция не будет работать удаленно, поскольку возможность ее работы зависит от наличия среды CLR. Удаленный вызов функции, требующей наличия среды CLR, приведет к ошибке на удаленном сервере.

Дополнительные сведения о параметре data_type

Значения параметра data_type ограничиваются списком типов, приведенным в следующей таблице, включая стили. Представленные сведения о стилях позволяют определить, какие типы шаблонов разрешены. Дополнительные сведения о стилях см. в документации по .NET Framework для перечислений System.Globalization.NumberStyles и DateTimeStyles.

Категория

Тип

Тип .NET Framework

Используемые стили

Числовой

bigint

Int64

NumberStyles.Number

Числовой

int

Int32

NumberStyles.Number

Числовой

smallint

Int16

NumberStyles.Number

Числовой

tinyint

Byte

NumberStyles.Number

Числовой

decimal

Десятичный

NumberStyles.Number

Числовой

numeric

Десятичный

NumberStyles.Number

Числовой

float

Двойной

NumberStyles.Float

Числовой

real

Одиночный

NumberStyles.Float

Числовой

smallmoney

Десятичный

NumberStyles.Currency

Числовой

money

Десятичный

NumberStyles.Currency

Дата и время

date

DateTime

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дата и время

time

TimeSpan

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дата и время

datetime

DateTime

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дата и время

smalldatetime

DateTime

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дата и время

datetime2

DateTime

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дата и время

datetimeoffset

DateTimeOffset

DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дополнительные сведения о параметре культуры

В следующей таблице показаны сопоставления между языками SQL Server и культурами платформы .NET Framework.

Полное имя

Псевдоним

LCID

Конкретная культура

us_english

Английский

1033

ru-RU

Deutsch

Немецкий

1031

de-DE

Français

Французский

1036

fr-FR

日本語

Японский

1041

ja-JP

Dansk

Датский

1030

da-DK

Español

Испанский

3082

es-ES

Italiano

Итальянский

1040

it-IT

Nederlands

Нидерландский

1043

nl-NL

Norsk

Норвежский

2068

nn-NO

Português

Португальский

2070

pt-PT

Suomi

Финский

1035

fi

Svenska

Шведский

1053

sv-SE

čeština

Чешский

1029

Cs-CZ

magyar

Венгерский

1038

Hu-HU

polski

Польский

1045

Pl-PL

română

Румынский

1048

Ro-RO

hrvatski

Хорватский

1050

hr-HR

slovenčina

Словацкий

1051

Sk-SK

slovenski

Словенский

1060

Sl-SI

ελληνικά

Греческий

1032

El-GR

български

Болгарский

1026

bg-BG

русский

Русский

1049

Ru-RU

Türkçe

Турецкий

1055

Tr-TR

British

Британский английский

2057

en-GB

eesti

Эстонский

1061

Et-EE

latviešu

Латышский

1062

lv-LV

lietuvių

Литовский

1063

lt-LT

Português (Brasil)

Бразильский

1046

pt-BR

繁體中文

Китайский (традиционный)

1028

zh-TW

한국어

Корейский

1042

Ko-KR

简体中文

Китайский (упрощенный)

2052

zh-CN

Арабский

Арабский

1025

ar-SA

ไทย

Тайский

1054

Th-TH

Примеры

А.PARSE в datetime2

SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'ru-RU') AS Result;

Ниже приводится результирующий набор.

Result
---------------
2010-12-13 00:00:00.0000000

(1 row(s) affected)

Б.PARSE с символом денежной единицы

SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;

Ниже приводится результирующий набор.

Result
---------------
345.98

(1 row(s) affected)

В.PARSE с неявным заданием языка

-- The English language is mapped to ru-RU specific culture
SET LANGUAGE 'English';
SELECT PARSE('12/16/2010' AS datetime2) AS Result;

Ниже приводится результирующий набор.

Result
---------------
2010-12-16 00:00:00.0000000

(1 row(s) affected)