【问题标题】:How trim() works in SQL Servertrim() 在 SQL Server 中的工作原理
【发布时间】:2022-01-03 05:20:02
【问题描述】:

我有一列 SysTraNo 包含一些特定数据,例如

HO/20-21/DRP/0001
215/21-22/AGP/0003

我想修剪整列,只取 20-2121-22 的数据。我该怎么做?

【问题讨论】:

  • SELECT SUBSTRING('HO/20-21/DRP/0001', CHARINDEX('/', 'HO/20-21/DRP/0001')+1, 5) AS res;
  • 是什么让您认为这与修剪有关?

标签: sql sql-server


【解决方案1】:

我们可以尝试使用基本字符串函数:

SELECT val,
       SUBSTRING(val,
                 CHARINDEX('/', val) + 1,
                 CHARINDEX('/', val, CHARINDEX('/', val) + 1) -
                     CHARINDEX('/', val) - 1) AS nums
FROM yourTable;

Demo

这里的逻辑是从第一个 / 之后的字符开始,直到第二 / 之前的字符。在其他数据库上,我们可以使用正则表达式,但 SQL Server 对此没有原生支持。

【讨论】:

    【解决方案2】:

    在 sql server trim 中的工作方式如下。 如上面的一个例子这里我给出了另一个例子,在电子邮件中使用子字符串来提取域部分。

    选择 电子邮件, 子串( 电子邮件, CHARINDEX('@', 电子邮件)+1, LEN(电子邮件)-CHARINDEX('@', 电子邮件) ) 领域 从 实践 订购方式 电子邮件;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      相关资源
      最近更新 更多