【问题标题】:How to select record having "_" in the field using SQL [duplicate]如何使用 SQL 在字段中选择具有“_”的记录 [重复]
【发布时间】:2015-12-22 14:56:22
【问题描述】:

我有一张客户表,记录如下:

CustomerID  CustomerName    Country
1           Alfr_eds        Germany
2           Ana             Mexico
3           Antonio         Mexico

而且我需要选择客户名称中包含_的记录,所以可以使用什么查询。

我尝试了以下查询:

SELECT * FROM Customers where CustomerName LIKE '%_%';

但它会返回所有数据。

【问题讨论】:

  • 好吗?你有什么问题?
  • 下划线是LIKE 查询中任意字符的通配符。因此 LIKE %_% 的意思是“给我所有在此列中至少包含一个任意字符的记录”。

标签: sql


【解决方案1】:

要将下划线“禁用”为通配符,您需要对其进行转义:

SELECT * 
FROM Customers 
where CustomerName LIKE '%\_%' escape '\';

子句escape '\' 告诉数据库\ 之后的任何字符都不应被视为通配符。你可以使用任何你喜欢的字符,例如# 也可以使用

SELECT * 
FROM Customers 
where CustomerName LIKE '%#_%' escape '#';

【讨论】:

    【解决方案2】:

    对于 SQL Server,您可以使用 [ ] 作为通配符,请查看 LIKE (Transact-SQL) 文档。

    所以你可以这样写:

    select * from customers where customerName like '%[_]%'
    

    您的查询使用了_ 通配符,因此它基本上检查customerName 中是否包含任何单个字符。

    【讨论】:

    • 与您的代表有关的人应该比发布仅代码的答案更清楚。啧啧啧:)
    • 只是好奇,为什么我们必须包含方括号?
    • 解决这个问题 :) 感谢提醒
    • @Marshal,以其他方式匹配任何一个字符。 [] 这是用于 Sql Server 的。
    • @RomanPekar,你确定 OP 使用 Sql Server 吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多