我正在使用Sybase,我正在做一个选择,它返回我一个名为“iftype”的列,但它的类型是int,我需要转换成varchar。当我尝试在没有转换函数的情况下进行选择时,我得到了这个错误:
错误码257,SQL状态37000:不允许从数据类型“VARCHAR”到“INT”的隐式转换。使用CONVERT函数运行此查询。
我不知道如何实现转换函数。有人能帮帮我吗?
我正在使用Sybase,我正在做一个选择,它返回我一个名为“iftype”的列,但它的类型是int,我需要转换成varchar。当我尝试在没有转换函数的情况下进行选择时,我得到了这个错误:
错误码257,SQL状态37000:不允许从数据类型“VARCHAR”到“INT”的隐式转换。使用CONVERT函数运行此查询。
我不知道如何实现转换函数。有人能帮帮我吗?
当前回答
使用STR函数:
SELECT STR(field_name) FROM table_name
参数
float_expression
带有小数点的近似数字(浮点)数据类型的表达式。
长度
是总长度。这包括小数点、符号、数字和空格。默认值是10。
小数
是小数点右数的位数。小数必须小于或等于16。如果decimal大于16,则结果被截断到小数点右16位。
来源:https://msdn.microsoft.com/en-us/library/ms189527.aspx
其他回答
实际上你不需要使用STR或Convert。只需选择“xxx”+LTRIM(ColumnName)就可以完成这项工作。 LTRIM可能在底层使用Convert或STR。
LTRIM还不需要提供长度。它似乎适用于整数或浮点数,而不用担心截断。
SELECT LTRIM(ColumnName) FROM TableName
此外,LTRIM比STR更好
SELECT STR(1234567890.123)
给了1234567890 而
SELECT LTRIM(1234567890.123)
给1234567890.123
使用转换函数。
SELECT CONVERT(varchar(10), field_name) FROM table_name
使用STR函数:
SELECT STR(field_name) FROM table_name
参数
float_expression
带有小数点的近似数字(浮点)数据类型的表达式。
长度
是总长度。这包括小数点、符号、数字和空格。默认值是10。
小数
是小数点右数的位数。小数必须小于或等于16。如果decimal大于16,则结果被截断到小数点右16位。
来源:https://msdn.microsoft.com/en-us/library/ms189527.aspx
您可以使用CAST函数:
SELECT CAST(your_column_name AS varchar(10)) FROM your_table_name
CONVERT(DATA_TYPE, Your_Column)是SQL中CONVERT方法的语法。通过这个转换函数,我们可以将位于逗号(,)右侧的列的数据转换为位于逗号(,)左侧的数据类型。请参阅下面的示例。
SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName