有人可以帮忙解决这个问题。我有这个SQL查询的问题。 我需要将price1_split转换为int。但它似乎也得到了我旁边的连接。
SELECT product_number,product_name,description,
price1+ ' ' + CONVERT(INT, price1_split) + '% |' +
price2+ ' ' + CONVERT(INT, price2_split) + '% |' +
price3+ ' ' + CONVERT(INT, price3_split) + '%' as price_split
from tbl_products
错误消息说: 转换varchar值'%|'时转换失败数据类型int。
答案 0 :(得分:3)
由于您最终需要一个由% |
分隔的字符串值,因此您根本不应将它们转换为整数。如果要将值一起添加,则需要将它们转换为INT,但是您没有添加它们,而是将它们连接到字符串上。假设它们已经是字符串(CHAR, VARCHAR
)值,只需将它们连接到其他字符元素上即可。
SELECT product_number,product_name,description,
price1+ ' ' + price1_split + '% |' +
price2+ ' ' + price2_split + '% |' +
price3+ ' ' + price3_split + '%' as price_split
from tbl_products
但是,如果它们是您尝试截断为整数的浮点值,则可以CONVERT()
将它们转换为INT
,然后CONVERT()
将它们返回到字符串以进行连接。在这种情况下,最好使用FLOOR()
进行截断,如CONVERT(VARCHAR(n), FLOOR(price1_split))
-- Using CONVERT(INT) for truncation
SELECT product_number,product_name,description,
price1+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price1_split)) + '% |' +
price2+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price2_split)) + '% |' +
price3+ ' ' + CONVERT(VARCHAR(32), CONVERT(INT, price3_split)) + '%' as price_split
from tbl_products