私はREXTESTERを使用してSQL Serverコードを記述しています。照合の競合SQL Serverのvarcharストアドプロシージャのパラメータ
それはここでメッセージを引き起こす最小限のコードだそれは...
を使われているSQL Serverの2014 Express Editionのだと言います。ここで
CREATE PROCEDURE #CONVERT_TIME_TO_24_HR
(
@TIME_STRING varchar(4)
)
AS
BEGIN
DECLARE @AMPM as varchar(2);
SET @AMPM = RIGHT(@TIME_STRING,2);
IF @AMPM = 'am'
SELECT 2
END
GO
は誤りです:
Error(s), warning(s):
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
@TIME_STRINGはちょうど私が問題を持っていないストアドプロシージャにパラメータを宣言していない場合は。私はSQL Serverインスタンスを制御できないので、どうすればこの問題を回避できますか?それはパラメータはありませんとき
はここforked versionません - 何の問題
DECLARE @TIME_STRING varchar(4);
DECLARE @AMPM as varchar(2);
SET @AMPM = RIGHT(@TIME_STRING,2);
IF @AMPM = 'am'
SELECT 2
ありがとうございます。それは治療に役立ちます。しかし、それほど直感的ではありません。奇妙なよ、宣言ではなく、IFでそれをやるよ。特に複数のIFがある場合は特に! – JGFMK
@ JGFMK。 。 。それは 'if'にはない。それは定数です。私は定数を作ることは、記憶されたデータがより賢明であるのと同じ照合をしていることを示しています。しかし、私が考えているように、定数は変数宣言から異なる照合を得るのは不思議です。私がこれについてあまりにも難しいと思うのは早すぎます。 –
あああ...私は 'pm'リテラルでも必要なので... – JGFMK