Конвертирует выражение одного типа данных в другой.

CAST(eExpression AS cDataType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL])

Параметры

eExpression

Определяет выражение данных, обычно в инструкции SQL, которое Вы хотите преобразовать в другой тип данных. eExpression может быть полем, вычисляемым полем, или другим типом выражения.
cDataType

Определяет допустимое имя или символ, обозначающие выбранное имя типа данных. cDataType может также быть выражением, которое вычисляется в допустимое имя типа данных или символ, обозначающие допустимый тип данных.
Обратите внимание:
Если Вы определяете выражение для cDataType , Вы должны включить выражение, для которого Вы определяете cDataType в круглые скобки.

Некоторые типы данных полей требуют, чтобы Вы определили значение для nFieldWidth , nPrecision , или оба значения. Следующая таблица перечисляет значения для cDataType и указывает применяются ли nFieldWidth и nPrecision .

cDataType Тип данных nFieldWidth nPrecision

W,  Blob

Blob

No

No

C, Char, Character

Character

Yes

No

Y, Currency

Currency

No

No

D, Date

Date

No

No

T, DateTime

DateTime

No

No

B, Double

Double

No

Yes

F, Float

Floating

Yes

Yes

G, General

General

No

No

I, Int, Integer

Integer

No

No

L, Logical

Logical

No

No

M, Memo

Memo

No

No

N, Num, Numeric

Numeric

Yes

Yes

Q, Varbinary

Varbinary

Yes

No

V, Varchar

Varchar

Yes

No

nFieldWidth

Определяет ширину поля для некоторых типов данных. Visual FoxPro игнорирует nFieldWidth для следующих типов данных: D, T, I, Y, L, М., Г, и W. Если nFieldWidth не определена, используются значения по умолчанию, например, как определено командой CREATE TABLE .
nPrecision

Определяет количество десятичных знаков для некоторых типов данных. Visual FoxPro игнорирует nPrecision для следующих типов данных: C, D, T, I, Y, L, М., Г, V, Q, и W. Если nPrecision не включен для типов данных Numeric или Float , значением по умолчанию является 0, что означает отсутствие десятичных знаков. Если nPrecision не включен для типа Double, nPrecision задается по умолчанию в количество десятичных знаков, установленной командой SET DECIMALS . Если nPrecision не определен для  других типов данных, используются значения по умолчанию, например, как определено командой CREATE TABLE .
NULL | NOT NULL

Определяет, разрешать ли пустые (null) значения в поле.
Обратите внимание:
Если одно или более полей могут содержать null значения, максимальное количество полей, которое таблица может содержать, уменьшается с 255 до 254.

Если значения NULL или NOT NULL не определены, они берутся из выражения.

Замечания

Следующая таблица показывает преобразования, которые поддерживаются функцией CAST( ) . По вертикальной оси перечисляются типы данных источника, а по горизонтальной конвертированный тип данных. Следующие символы указывают уровень поддерживаемого преобразования:

  • F - полное преобразование без потери данных

  • P - частичное преобразование с возможной потерей данных

  • N - не поддерживается

Тип C D T N F Я B Y L М. Г V Q W

C

F

P

P

P

P

P

P

P

P

F

N

F

F

F

D

F

F

F

N

N

N

N

N

N

F

N

F

N

N

T

F

P

F

N

N

N

N

N

N

F

N

F

N

N

N

F

N

N

F

F

P

F

P

P

F

N

F

N

N

F

F

N

N

F

F

P

F

P

P

F

N

F

N

N

Я

F

N

N

F

F

F

F

F

P

F

N

F

N

N

B

P

N

N

P

P

P

F

P

P

F

N

P

N

N

Y

F

N

N

P

P

P

F

F

P

F

N

F

N

N

L

F

N

N

F

F

F

F

F

F

F

N

F

N

N

М.

P

P

P

P

P

P

P

P

P

F

N

P

P

F

Г

N

N

N

N

N

N

N

N

N

N

F

N

N

F

V

P

P

P

P

P

P

P

P

P

F

N

F

P

P

Q

P

N

N

N

N

N

N

N

N

F

N

P

F

F

W

P

N

N

N

N

N

N

N

N

F

F

P

P

F

Если Вы определяете десятичную точность, то преобразования между числовыми типами данных, например, Numeric , Float , Currency , и Double в тип данных Integer может привести к потере точности.

Для преобразований в следующие типы данных: Character , Varchar , и Varbinary , если указанный размер поля меньше чем первоначальный размер данных, Visual FoxPro усекает значения, чтобы соответствовать указанной ширине поля. Для преобразований в тип данных Character , если указанный размер больше чем первоначальный размер данных, Visual FoxPro дополняет поле пробелами справа от значения.

Пример

Следующий пример использует команаду SQL SELECT , чтобы вернуть данные из поля Product_ID таблицы "Товары" из тестовой базы данных Visual FoxPro TestData.dbc. Пример использует функцию CAST () , чтобы конвертировать результаты выборки, полученной выражением unit_Cost * in_Stock, которые имеют тип Currency , в значение с типом Numeric, размером поля 8 и десятичной точностью 2.

Скопировать код
CLEAR ALL
OPEN DATABASE HOME(2) + 'Data\Testdata.dbc'
SELECT Product_ID, CAST(unit_Cost * in_Stock AS Numeric(8,2)) FROM Products

См. Также