Varchar 变量在 WHERE 子句中不起作用 [英] Varchar variable is not working in WHERE clause

查看:45
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆