【问题标题】:How to select a substring but leaving out the last character if is an alphabet in SQL如果是 SQL 中的字母,如何选择子字符串但省略最后一个字符
【发布时间】:2021-08-05 12:27:29
【问题描述】:
DECLARE @CUSTOMER_ID VARCHAR(50)
SELECT @CUSTOMER_ID = 'RS/123/2017(SA)' 
PRINT @CUSTOMER_ID

DECLARE @CUSTOMER_ID1 VARCHAR(50)
SELECT @CUSTOMER_ID1 = 'RS/123/2017SA' 
PRINT @CUSTOMER_ID1

我需要一个可以返回我的 customer_ID 的函数,字符串中的最后一个字符除外。我只能使用以下函数处理第一个。

case when charindex('(',@CUSTOMER_ID) = 0 then @CUSTOMER_ID 
else left(@CUSTOMER_ID,charindex('(',@CUSTOMER_ID)-1))

【问题讨论】:

  • 请发布有问题的愿望结果。
  • 我不明白你在问什么。输入和结果的多个示例会有所帮助。

标签: sql substring charindex


【解决方案1】:

找到最右边数字的位置并取包含该位置的字符串的左边符号

DECLARE @CUSTOMER_ID1 VARCHAR(50);
SELECT @CUSTOMER_ID1 = 'RS/123/2017SA';

select left(@CUSTOMER_ID1, len(@CUSTOMER_ID1) - patindex('%[0-9]%', reverse(trim(@CUSTOMER_ID1))) + 1) customer_ID; 

【讨论】:

  • 与此相反的是什么?假设我想从字符串“RS/123/2017(SA)”返回“SA”,即使在括号内我只想要 SA。
  • right (@CUSTOMER_ID1 , patindex('%[0-9]%', reverse(trim(@CUSTOMER_ID1))) +1, 8000) 将返回正确的部分。然后应用replace两次删除'('和')'
【解决方案2】:

你可以像这样使用子字符串:

SELECT SUBSTR(@CUSTOMER_ID, 0, LENGTH(@CUSTOMER_ID) - 1) FROM your_table

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2018-09-13
    • 2013-07-29
    • 1970-01-01
    相关资源
    最近更新 更多