我在运行此查询时遇到错误,因为数据类型money无法隐式转换为varchar。但是,在尝试转换之前,我正在使用if语句来确保数据类型不是金钱。显然,转换正在执行。有人知道为什么sql服务器条件
表:BBH_NEW西:rebate2
数据类型:钱
if 'money'= 'money'
begin
if (select max([rebate2]) from [BBH_NEW]) = 0
and (select min([rebate2]) from [BBH_NEW]) = 0
print ' rebate2 '
print ' 1 '
end
if 'money'!= 'money'
begin
IF NOT EXISTS (SELECT top 1 * FROM [BBH_NEW] WHERE [rebate2] IS NOT NULL and
len([rebate2]) > 0)
BEGIN
print ' rebate2 '
end
end
错误:
消息257,级别16,状态3,行11
从数据类型的钱为varchar隐式转换是不允许的。使用CONVERT函数来运行此查询。
是此代码已生成。如果有帮助,这是一个被用来制造它的代码:
select @temp =
data_type FROM information_schema.columns
WHERE table_schema = 'dbo'
AND table_name = @tblname
AND column_name = @col
SELECT @hold =
'if '''[email protected]+'''= ''money''
begin
if (select max(['[email protected]+']) from ['[email protected]+']) = 0
and (select min(['[email protected]+']) from ['[email protected]+']) = 0
print '' '[email protected]+' money''
end
if '''[email protected]+'''!= ''money''
begin
IF NOT EXISTS (SELECT max([' + @col + ']) FROM ['+ @tblname + ']
WHERE len([' + @col + ']) > 0)
BEGIN
print '' ' + @col + ' ''
end
end'
何时字面上的字符串'钱'不会自己平等? – dnord
此代码是动态生成的。它通常不是'钱'!='钱',它使用当前列数据类型。即如果'varchar'!='钱'。 我用这个例子是因为它试图告诉我,因为它正在执行下一行,实际上'钱'!='钱' – Colin
所以*提供的*代码实际上是生成并产生了错误?我在SSMS 2008中运行它,它运行时没有缺陷。 –