首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL中,如何删除左侧的前3个字符以及右侧某个特定字符之后的所有字符

在SQL中,如何删除左侧的前3个字符以及右侧某个特定字符之后的所有字符
EN

Stack Overflow用户
提问于 2019-07-12 10:29:42
回答 7查看 109关注 0票数 2

在SQL中,我如何删除(在我的报告中显示no deleting from database)前3个字符(CN=)以及逗号后面跟"OU“的所有内容,以便在同一列中保留姓名和姓氏?例如:

代码语言:javascript
运行
复制
CN=Tom Chess,OU=records,DC=1234564786_data for testing, 1234567
CN=Jack Bauer,OU=records,DC=1234564786_data for testing, 1234567
CN=John Snow,OU=records,DC=1234564786_data for testing, 1234567
CN=Anna Rodriguez,OU=records,DC=1234564786_data for testing, 1234567

所需的显示:

代码语言:javascript
运行
复制
Tom Chess
Jack Bauer
John Snow
Anna Rodriguez

我试过使用TRIM,但我不知道如何在不声明位置的情况下做到这一点,而且名字和姓氏的长度不同,我真的不知道该如何处理。

提前谢谢你

更新:我想知道一种方法,使用定位来匹配逗号的位置,然后将其提供给子字符串。不确定像这样的方法是否有效,也不确定如何将语法组合在一起。你认为如何?这是一个可行的方法吗?

EN

回答 7

Stack Overflow用户

发布于 2019-07-12 12:43:08

你可以试试这个SUBSTRING(ColumnName, 4, CHARINDEX(',', ColumnName) - 4)

票数 2
EN

Stack Overflow用户

发布于 2019-07-12 14:27:17

在Postgres中,假设名称中不包含,,则可以使用split_part()

代码语言:javascript
运行
复制
select substr(split_part(the_column, ',', 1), 4)
from ...
票数 1
EN

Stack Overflow用户

发布于 2019-07-13 23:22:06

适用于LUW的Db2 11.x:

代码语言:javascript
运行
复制
with tab (str) as (values
  '  CN  = Tom Chess  , OU = records,DC=1234564786_data for testing, 1234567'
, 'CN=Jack Bauer,OU=records,DC=1234564786_data for testing, 1234567'
, 'CN=John Snow,OU=records,DC=1234564786_data for testing, 1234567'
, 'CN=Anna Rodriguez,OU=records,DC=1234564786_data for testing, 1234567'
)
select REGEXP_REPLACE(str, '^\s*CN\s*=\s*(.*)\s*,\s*OU\s*=.*', '\1')
from tab;

请注意,这种正则表达式模式允许任意数量的空格,如上面示例的第1条记录所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56999495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档