You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL中WHERE子句变量拼接单引号查询无结果的求助

问题原因及解决方法

你的问题出在两个关键地方:

  1. 变量赋值丢失前导0
    你给@Phone赋值时用了SET @Phone = 075000000,这里把数值075000000(实际等于75000000)赋值给字符串变量,SQL会自动把数值转成字符串'75000000',直接丢失了开头的0,自然和数据库里的'075000000'匹配不上。

  2. WHERE子句错误拼接单引号
    你试图拼接单引号的写法完全没必要,而且会导致实际匹配的是带单引号的字符串(比如'\'075000000\''),但数据库里的phone字段值是不带外层单引号的,所以肯定查不到结果。


正确的SQL写法

-- 用NVARCHAR匹配字段类型,避免隐式转换
DECLARE @Phone NVARCHAR(50) 
SET @Phone = '075000000' -- 给字符串值加单引号,保留前导0

SELECT * 
FROM my_table
WHERE phone = @Phone -- 直接用变量和字段比较,无需额外拼接

额外说明

如果坚持用VARCHAR变量,写法逻辑一致,只要保证赋值时加单引号保留前导0,WHERE子句直接用变量即可。另外,因为你的phone字段是NVARCHAR类型,用NVARCHAR变量能避免不必要的类型转换,性能和准确性更好。

内容的提问来源于stack exchange,提问作者Damian2310

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:45:58