【问题标题】:Get every string before character in SQL Server获取 SQL Server 中字符前的每个字符串
【发布时间】:2023-01-26 17:27:23
【问题描述】:

我在表中有两条记录如下 - :

1.123-21
2.123-21-30

如何查询字符特定位置之前的所有字符串。下面显示了预期的输出

1. 123-21 -> 123 
2. 123-21-30 ->123-21

我该如何解决?

【问题讨论】:

  • CHARINDEX 将找到- 位置。然后使用子字符串。
  • 这里的逻辑到底是什么?你实际上并没有解释它。你说你想要某个字符之前的字符串,但那个字符是什么。如果是-,哪两行不是123?
  • 如果没有破折号,则不返回任何内容,否则最后一个破折号之前的所有字符?这个问题有被关闭的危险,因为它需要细节或清晰度。

标签: sql sql-server


【解决方案1】:
DECLARE @T TABLE (Vals VARCHAR(100))
INSERT INTO @T(Vals) VALUES ('123-21') , ('123-21-30')

SELECT LEFT(Vals, LEN(Vals) - CHARINDEX('-', REVERSE(Vals)) )
FROM @T

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多