Распечатать страницу

Преобразование типов данных в VFP

« Назад

VFP имеет несколько функций преобразовывающих один типа данных в другой, например функция STR( ) преобразовывает числовое значение в символьное, а функция VAL( ), наоборот, преобразовывает строку в число. В 9-й версии в VFP появилась новая функция CAST( ), позволяющая выполнять все допустимые преобразования типов данных.

Функция

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

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

Параметры:

eExpression – выражение, которое нужно преобразовать в другой тип. Может быть в том числе полем или вычисляемым полем.

cDataType – имя или соответствующая ему буква (табл. 3.8), представляющая тип данных, в который преобразовывается eExpression. Если параметр cDataType задается в виде выражения, то он заключается в круглые скобки.

Таблица 3.8

Значения параметра cDataType и флаги присутствия параметров nFieldWidth и nPrecision

cDataType

Тип данных

nFieldWidth

nPrecision

W, Blob

Blob

Нет

Нет

C, Char, Character

Character

Да

Нет

Y, Currency

Currency

Нет

Нет

D, Date

Date

Нет

Нет

T, DateTime

DateTime

Нет

Нет

B, Double

Double

Нет

Да

F, Float

Floating

Да

Да

G, General

General

Нет

Нет

I, Int, Integer

Integer

Нет

Нет

L, Logical

Logical

Нет

Нет

M, Memo

Memo

Нет

Нет

N, Num, Numeric

Numeric

Да

Да

Q, Varbinary

Varbinary

Да

Нет

V, Varchar

Varchar

Да

Нет

nFieldWidth – длина поля типа данных, заданного cDataType. Параметр игнорируется для типов D, T, I, Y, L, M, G и W. Если параметр не задан, то берется значение по умолчанию (см. описание команды CREATE TABLE).

nPrecision – число десятичных знаков в представлении числового результата. Параметр игнорируется для типов C, D, T, I, Y, L, M, G, V, Q и W. Если для типа Numeric или Float параметр опущен, то берется значение 0. Если параметр не задан для типа Double, то он берется из установки команды SET DECIMALS. В прочих случаях при отсутствии параметра берутся значения по умолчанию, перечисленные при рассмотрении команды CREATE TABLE.

NULL | NOT NULL – задает, допускается ли NULL в результирующем поле. Употребляется, например, когда функция используется для задания поля в команде SELECT – SQL. Если параметр не задан, то он наследуется из выражения eExpression.

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

F – полное преобразование без потерь данных;

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

N – преобразование не поддерживается.

Таблица. 3.9

Возможные преобразования типов данных, выполняемые CAST( )

Тип

C

D

T

N

F

I

B

Y

L

M

G

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

I

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

M

P

P

P

P

P

P

P

P

P

F

N

P

P

F

G

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

При преобразовании типов Character, Varchar и Varbinary, если длина результата меньше оригинальной длины, излишние символы (байты) отсекаются. Если результат в случае Character имеет большую длину, чем оригинал, то избыточные символы замещаются пробелами.

Пример:

open database Home(2) + 'Data\TestData.dbc'

select Product_ID, Cast(Unit_Cost * In_Stock as Numeric(8, 2)) from Products