Преобразование типов данных в VFP
« Назад VFP имеет несколько функций преобразовывающих один типа данных в другой, например функция STR( ) преобразовывает числовое значение в символьное, а функция VAL( ), наоборот, преобразовывает строку в число. В 9-й версии в VFP появилась новая функция CAST( ), позволяющая выполнять все допустимые преобразования типов данных. Функция CAST(eExpression AS 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