1

有人可以帮忙吗?我遇到了这个 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。

4

1 回答 1

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
于 2012-07-09T12:26:57.253 回答