我正在使用 T-SQL 处理查询。
目标:返回包含存储在变量中的名称的行。
我的问题:查询返回所有行,没有过滤。
附加信息:名称存储为varchar
,字母后有几个空格,这就是为什么我想将变量与 '%' 连接。
此外,当我运行查询时只在变量末尾附加一个 '%',数据库返回了所有以 'D' 开头的记录。
我的查询:
DECLARE @fName as varchar;
SET @fName='DILLON';
SELECT DISTINCT
e.FIRST_NAME, e.LAST_NAME, e.EMAIL_ADDRESS
FROM
[172.20.11.11].LSLMDB.dbo.vwEmployee e
JOIN
[172.20.11.11].LSLMDB.ls_apps.PAEMPLOYEE pa ON pa.EMPLOYEE = e.EMPLOYEE
JOIN
[172.20.11.11].LSLMDB.ls_apps.PCODES pc ON pa.LOCAT_CODE = pc.CODE
JOIN
[172.20.11.11].LSLMDB.ls_apps.PCODESDTL pcd ON pc.CODE = pcd.CODE
WHERE
e.FIRST_NAME LIKE CONCAT('%',@fName,'%');
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助的尝试!
问题是系统默认为DECLARE @fName as varchar(1)
- 这可能不是您想要的。更改为DECLARE @fName as varchar(100);
This 应该可以按预期工作。
查询返回所有行,不进行过滤。
不,它返回所有包含D
. 根据合并设置,这可能包括大写和小写匹配
此外,当我运行查询时只在变量末尾附加一个 '%',数据库返回了所有以 'D' 开头的记录。
由于它只是一个字符,因此过滤器D%
将返回所有以 D 开头的记录。