将INT转换为VARCHAR SQL


341

我正在使用Sybase,并且正在执行select操作,该操作返回一个称为“ iftype”的列,但其类型为int,我需要转换为varchar。当我尝试执行没有转换功能的选择时,出现以下错误:

错误代码257,SQL状态37000:不允许从数据类型'VARCHAR'到'INT'的隐式转换。使用CONVERT函数运行此查询。

我不知道如何实现该功能CONVERT。有人可以帮我吗?


5
我认为您需要这样做
Lajos Veres

Answers:


593

使用转换功能。

SELECT CONVERT(varchar(10), field_name) FROM table_name

8
根据错误,是VARCHARINT但是我在回答他的问题,而不是错误消息。
Tobberoth

2
谢谢。但是现在我又遇到了另一个错误。当我尝试执行这种选择时:SELECT CONVERT(varchar(10),field_name)FROM table_name。甚至是普通的类似:SELECT field_name FROM table_name。两者都是正确的。我不知道为什么。但是,当我尝试在选择的末尾使用“ where”(无论是否使用转换)时,出现相同的错误:不允许从数据类型'VARCHAR'到'INT'的隐式转换。使用CONVERT函数运行此查询
Murilo 2013年

3
@Murilo那是因为错误不是您想的那样。该错误告诉您代码正在尝试varcharint需要使用的位置使用。您需要编写实际的SQL语句以帮助我们。
Tobberoth

14
@Tobberoth,它到底值多少钱,我只是通过谷歌搜索降落在这里。SO的部分价值是获得几乎所有问题的答案,甚至是基本问题。
KyleMit 2014年

6
我认为应该是varchar(11)在负数很大的情况下。
2014年

100

使用STR功能:

SELECT STR(field_name) FROM table_name

争论

float_expression

是带有小数点的近似数字(浮点)数据类型的表达式。

长度

是总长度。这包括小数点,符号,数字和空格。预设值为10。

小数

是小数点右边的位数。小数必须小于或等于16。如果小数大于16,则结果将被截断至小数点右边的16位。

来源:https : //msdn.microsoft.com/en-us/library/ms189527.aspx


3
STR()应该是正确的答案,它比其他选择更简单,更不易出错。
HerrimanCoder

7
由于某些奇怪的原因,这对我不起作用,因为它在文本前面添加了一个选项卡,不知道为什么。选定的解决方案确实有效。
MaQy

3
str会在转换后的数字前面
填充

13
使用LTRIM(STR())
ashilon

1
STR()在要转换为字符串的变量的前面提供空格。选择十进制变量可能是一个很好的选择,但对于Int而言则不是。
Ebleme '19


2

实际上,您不需要使用STR或Convert。只需选择'xxx'+ LTRIM(1)即可完成工作。LTRIM可能在后台使用Convert或STR。

LTRIM还消除了提供长度的需要,通常默认值10足以将整数转换为字符串。

SELECT LTRIM(ColumnName) FROM TableName

0

CONVERT(DATA_TYPE , Your_Column)是SQL中CONVERT方法的语法。通过此转换功能,我们可以将逗号(,)右侧的Column数据转换为逗号(,)左侧的数据类型。请参见以下示例。

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.