Sql 如何使用最后一个字母数字键作为参考修剪数据

Sql 如何使用最后一个字母数字键作为参考修剪数据,sql,sql-server,Sql,Sql Server,需要你的帮助,在下面的数据修剪或什么,所以曾经得到的结果,也显示在下面。我想获取引用为最后一个-符号的数据 见下面的例子 FROM TO +-------------------------------+ |ABC-1234-AR-R | ABC-1234-AR | |ABC-1254-AR-IT | ABC-1254-AR | |ABC-1223-AR-LTL| ABC-1223-AR | |ABC-1234-R

需要你的帮助,在下面的数据修剪或什么,所以曾经得到的结果,也显示在下面。我想获取引用为最后一个
-
符号的数据

见下面的例子

   FROM                  TO
  +-------------------------------+
  |ABC-1234-AR-R  | ABC-1234-AR   |
  |ABC-1254-AR-IT | ABC-1254-AR   |
  |ABC-1223-AR-LTL| ABC-1223-AR   |
  |ABC-1234-R     | ABC-1234      |
  +-------------------------------+

这将为您提供上次出现连字符的索引:

LEN(data) - CHARINDEX('-', REVERSE(data)) + 1
所以取这个长度的子字符串就足够了:

SELECT
    data,
    SUBSTRING(data, 1, LEN(data) - CHARINDEX('-', REVERSE(data))) AS data_trimmed
FROM yourTable;


这将为您提供上次出现连字符的索引:

LEN(data) - CHARINDEX('-', REVERSE(data)) + 1
所以取这个长度的子字符串就足够了:

SELECT
    data,
    SUBSTRING(data, 1, LEN(data) - CHARINDEX('-', REVERSE(data))) AS data_trimmed
FROM yourTable;


您还可以将
功能组合使用

查询

select [from], 
left([from], len([from]) - charindex('-', reverse([from]), 1)) as [to]
from [your_table_name];

您还可以将
CHARINDEX
功能组合使用

查询

select [from], 
left([from], len([from]) - charindex('-', reverse([from]), 1)) as [to]
from [your_table_name];

第四条记录没有被删减,而是添加了内容。也许可以更新您的问题,并告诉我们您打算更新的逻辑。这背后的逻辑是根据最后一个“-”符号修剪数据“-”符号后面的任何字符串或字符都将被修剪。如果第四条记录没有被修剪,则会向其中添加内容。也许可以更新您的问题,并告诉我们您打算更新的逻辑。这背后的逻辑是根据最后一个“-”符号修剪数据“-”符号后面的任何字符串或字符都将被删除trimmed@JackyMontevirgen你说得对,我误以为是逗号而不是连字符。回答正确。@TimBiegeleisen干杯!知道了!现在我知道了背后的逻辑,我需要反转字符串的起始位置!回答接受@TimBiegeleisen非常感谢你。我经常在
CHARINDEX
:)@jackymontevigen中弄乱参数你是对的,我错误地认为逗号而不是连字符。回答正确。@TimBiegeleisen干杯!知道了!现在我知道了背后的逻辑,我需要反转字符串的起始位置!回答接受@TimBiegeleisen非常感谢你。我经常在
CHARINDEX
:)中弄乱参数