【问题标题】:SQL Query: Better Option for Returns First and Last Names with Spaces?SQL 查询:返回带空格的名字和姓氏的更好选择?
【发布时间】:2018-08-09 15:02:45
【问题描述】:

我正在尝试查找名字或姓氏在名称中间包含空格的客户列表。这是我正在使用的当前查询。

SELECT * FROM dbo.tblCustomers
WHERE FirstName LIKE '% %'
       OR
      LastName LIKE '% %'

更新*** 基本上,我想返回名称左侧或右侧没有空格的数据,仅在名称中间的某个位置。

【问题讨论】:

  • 然后呢?你有什么问题?那应该做你想做的......
  • @Milney 更新了我的问题。谢谢!
  • 你的意思是:返回每个名字中间有空格,不管开头还是结尾有空格?

标签: sql sql-server tsql


【解决方案1】:
SELECT *
FROM dbo.tblCustomers
WHERE
    TRIM(FirstName) LIKE '% %'
    OR
    TRIM(LastName) LIKE '% %'

【讨论】:

  • 这将如何工作? ' Jo hn ' 会得到匹配,即使它有前导和尾随空格。
  • @Error_2646 当您从 OP 逐字阅读时,您是对的。但我认为开头或结尾的空格无关紧要。这完全是关于名称中间的空格。安迪可以告诉...
【解决方案2】:

这应该可以,但标记您的 DBMS 并检查文档以了解它的长度函数是否考虑尾随空格。我假设 SQL 服务器并使用数据长度。

SELECT *
FROM dbo.tblCustomers
WHERE (
    FirstName LIKE '% %'
    AND DATALENGTH(TRIM(FirstName)) = DATALENGTH(FirstName)
      )
    OR
    (
    LastName LIKE '% %'
    AND DATALENGTH(TRIM(LastName)) = DATALENGTH(LastName)
      );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多