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()文字列に戻して連結することができます。この場合、次のように切り捨て に使用する方がおそらく良いでしょう。INTCONVERT()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 に答える