SQL Server中使用LIKE通配符与变量实现邮箱后缀查询
解决SQL Server中变量拼接LIKE查询无结果的问题
你的问题核心是变量声明时未指定数据类型,SQL Server会默认将变量识别为char(1)类型,导致@emailAddress只存储了第一个字符@,自然查不到匹配的结果。
正确的查询写法
声明变量时必须指定合适的数据类型(比如VARCHAR(255),可根据实际邮箱长度调整),再拼接LIKE条件:
DECLARE @emailAddress VARCHAR(255) = '@statusquo.org'; SELECT * FROM users WHERE email_address LIKE '%' + @emailAddress;
也可以用CONCAT函数简化拼接逻辑,效果一致:
DECLARE @emailAddress VARCHAR(255) = '@statusquo.org'; SELECT * FROM users WHERE email_address LIKE CONCAT('%', @emailAddress);
额外注意事项
如果你的邮箱后缀包含LIKE通配符(比如%、_、[]),需要用ESCAPE关键字转义,避免通配符被解析为匹配规则。例如后缀是@status_quo.org时:
DECLARE @emailAddress VARCHAR(255) = '@status_quo.org'; SELECT * FROM users WHERE email_address LIKE '%' + REPLACE(@emailAddress, '_', '\_') ESCAPE '\';
内容的提问来源于stack exchange,提问作者Samuel Hyde
相关产品推荐
相关产品推荐

