【问题标题】:SQL Like query last matchSQL Like 查询最后一次匹配
【发布时间】:2023-04-09 12:12:01
【问题描述】:

我有一个包含名称字段的数据库。 (即 Firstname M. Lastname 或 Firstname Lastname)。
正在尝试按姓氏过滤。
如何查询最后一个空格?

类似的东西
select * from person where name like "%a%"(但空格是最后一个空格)

谢谢,
三通

【问题讨论】:

  • 我认为你不能只用 LIKE。您使用的是什么 RDBMS?

标签: sql


【解决方案1】:

如果使用某些版本的 Microsoft SQL Server,您可以reverse() 字符串,然后使用charindex() 查找第一个空格。

【讨论】:

    【解决方案2】:

    如果是mySQL,可以考虑使用SUBSTRING_INDEX()函数(配合count = -1)。

    【讨论】:

      【解决方案3】:
      SELECT CASE WHEN [Name] LIKE '% [^ ]%'
                  THEN SUBSTRING([Name], 
                                 LEN([Name]) - CHARINDEX(' ', REVERSE([Name])) + 1, 
                                 8000)
                  ELSE [Name]
             END AS [LastName]
      FROM [Customers]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-23
        • 1970-01-01
        • 1970-01-01
        • 2017-09-09
        • 2017-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多