を返す私は、SQL Server 2012を使用しています私は私のクエリRIGHT関数がエラー
SELECT * FROM table1 PC
JOIN table2 t2
ON PC.ID = t2.ID
AND
(
RIGHT
(
PC.C_PRODUCT_ID,
(DATALENGTH(PC.C_PRODUCT_ID) - (DATALENGTH(PC.C_PRODUCT_ID) - CHARINDEX(REVERSE('*'),
REVERSE(PC.C_PRODUCT_ID)))-1)
)
) = REPLACE(T2.COMP_PROD_ID,' ','')
でこの文を持っており、それは誤り
メッセージ536、レベル16、状態4を、スローLine 2
無効な長さパラメータがRIGHT関数に渡されます。
私はいくつかの例をとり、RIGHT
関数に正の値が渡されていることを確認しました。
C_PRODUCT_ID
の例ここでは私の場合は
- C_PRODUCT_ID C_PRODUCT_IDの= '3-12 * LV431536'
- リバース=したがって '635134VL * 21-3'
、従っ上記の文に
26 – (26- 9) -1
26- 17 -1
9 -1
8
これは、LV431536のLIGHT(3-12 * LV431536,8)です。この値はT2.COMP_PROD_IDに存在する。
私の質問がはっきりしていて、今は保留にならないといいと思います。
*を付けずに製品IDの例を試してみると、指定したエラーメッセージが表示されます。すべての商品IDに*文字が含まれていますか? –
@CsabaBenkoはいすべてのC_PRODUCT_IDには必ず*が含まれています。 – Tanu
次に、@ gbnにはおそらくUnicode文字列の良い点があると思います。 –