Varchar 变量在 WHERE 子句中不起作用 [英] Varchar variable is not working in WHERE clause
本文介绍了Varchar 变量在 WHERE 子句中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么这样做...
DECLARE @MyInt int = 12345;
SELECT * FROM MyTable WHERE MyId = @MyInt; --Returns 1 row
SELECT * FROM MyTable WHERE MyId = 12345; --Returns 1 row
但这不是吗?
DECLARE @MyVarchar varchar = 'ABCDEF';
SELECT * FROM MyTable WHERE MyId = @MyVarchar; --Returns 0 rows
SELECT * FROM MyTable WHERE MyId = 'ABCDEF'; --Returns 1 row
SQL Server 版本为 10.50.1746
SQL Server version is 10.50.1746
推荐答案
因为当你declare
时,默认varchar
长度为1
.所以 @MyVarchar
最终成为 'A'
.
Because when you declare
, default varchar
length is 1
. So @MyVarchar
ends up being 'A'
.
这与 cast(something as varchar)
不同,其中 默认长度为 30
.
This is different to cast(something as varchar)
, where default length is 30
.
正确的是
DECLARE @MyVarchar varchar(10) = 'ABCDEF';
其中 10
是表中列的长度.
where 10
is the length of the column in the table.
这篇关于Varchar 变量在 WHERE 子句中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文