sql-server - SQL 中的正则表达式

标签 sql-server tsql sql-server-2005

e_vis_name 列的单元格中,我有组织结构,其中的部门用 \ 符号划分,例如

  • 莫斯科\方向
  • 雅罗斯拉夫\销售
  • 鄂木斯克\商业中心\销售

我需要在第一个\符号之后剪切所有内容以获得以下结果:

  • 莫斯科
  • 雅罗斯拉夫
  • 鄂木斯克

我该怎么做?

最佳答案

您可以使用 LEFT 的组合和 CHARINDEX像这样:

SELECT LEFT(colname, CHARINDEX('\', colname)-1) FROM table

编辑:如果您没有 \ 符号,如果您只想获取整列,您可以这样做:

SELECT 
    CASE WHEN CHARINDEX('\', colname) > 0 THEN LEFT(colname, CHARINDEX('\', colname)-1)
    ELSE ISNULL(colname, '') 
    END
FROM table

这是说,“如果有一个\,那么取那个点之前的字符,否则取整列。如果该列是NULL,那么就设置一个空字符串。”

我相信您可以根据自己的目的进行调整。

关于sql-server - SQL 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30184022/

相关文章:

sql - 在 MSSQL 中运行此 sql 查询时出现问题

sql - 在 DELETE 中使用 CTE 未执行

sql-server - 如何使用锁定提示使两个并行查询返回不相交的结果?

sql - 在 SQL Server 中缓存连接表

sql-server - sql server reporting services 2004 中另一个报告的链接/事件

sql-server - 将变量传递给触发器

sql - 这种类型的连接在最后被限定时被称为什么?

sql-server - 在 SQL Server 2008 中的符号之前隔离字符串中的子字符串

c# - 如何在转换后的字符串中将字符串生成器转换为没有转义序列的字符串

sql-server-2005 - 如何将行转置为列?