You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle查询:UserName列姓名反转时的WHERE条件写法

姓名格式反转匹配的WHERE子句写法

假设你的目标匹配字符串是'Bill Clinton'(名字+空格+姓氏),需要匹配表中UserName字段存储为'Clinton Bill'(姓氏+空格+名字)的行,以下是主流数据库的WHERE子句写法:

MySQL/MariaDB

利用SUBSTRING_INDEX函数拆分姓氏和名字,反转拼接后和目标字符串比较:

WHERE CONCAT(SUBSTRING_INDEX(UserName, ' ', -1), ' ', SUBSTRING_INDEX(UserName, ' ', 1)) = 'Bill Clinton'

如果需要忽略大小写匹配,可以统一转成小写:

WHERE LOWER(CONCAT(SUBSTRING_INDEX(UserName, ' ', -1), ' ', SUBSTRING_INDEX(UserName, ' ', 1))) = LOWER('Bill Clinton')

SQL Server

通过CHARINDEX定位空格位置,拆分后反转拼接:

WHERE CONCAT(
    SUBSTRING(UserName, CHARINDEX(' ', UserName) + 1, LEN(UserName)),
    ' ',
    SUBSTRING(UserName, 1, CHARINDEX(' ', UserName) - 1)
) = 'Bill Clinton'

PostgreSQL

使用SPLIT_PART按空格拆分字段,反转拼接:

WHERE CONCAT(SPLIT_PART(UserName, ' ', 2), ' ', SPLIT_PART(UserName, ' ', 1)) = 'Bill Clinton'

注意事项

  • 以上写法默认UserName字段严格遵循「姓氏 名字」格式,仅包含一个空格;如果存在中间名或多空格场景,需要额外处理(比如先清理多余空格)。
  • 部分数据库默认区分大小写,根据实际需求添加大小写转换函数。

内容的提问来源于stack exchange,提问作者Markus1980Wien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:35:22