在 SQL 服务器中使用字符串参数时无法 return 更正查询

Unable to return correct query when using string parameter in SQL Server

我有一个简单的员工table

这是数据

当我尝试 运行 带有字符串参数的查询时,它没有 return 任何东西,尽管它有正确的参数

当我尝试将其更改为双引号 " 时,return出现错误

我错过了什么吗?提前致谢

您的第一个查询是正确的。问题是数据。 empid 字段中有 '10002' 以外的内容。您可以通过多种方式对此进行调查:

select length(empid), '|' + empid + '|'
from employee

这将提供有关您可能看不到的意外字符的信息。该字段的长度应为 6。第二列的输出应为“|100002|”。

如果字段开头或结尾的额外字符是问题所在,则:

where empid = '%100002%'

问题解决。但是,存在很大的潜在性能差异,因为此查询无法利用主键索引。所以,你想修复数据。

您可能将字母 0 与数字混淆,或者将大写 "I" 或小写 "l" 与 1 混淆。这些可能更难识别,但您可以使用 lower() upper() 帮助发现此类问题。

您可以在值的末尾有一个特殊的字符,例如回车 return。 使用下面的查询来检查您的 table.

中是否存在这些情况
    SELECT
       EmpId,
    --   convert(int, EmpId) AS EmpId_INT,
       LEN(EmpId) AS Len_EmpId
    FROM
       Employee
    -- WHERE
    --   LEN(EmpId) <> LEN(convert(int, EmpId))
    ORDER BY
       EmpId

如果不是必须的,我建议将"EmpId"数据类型改为int。

您只需将 empId 列的数据类型更改为 Int 而不是 varchar。