编写查询以查找字符串的一部分的问题

时间:2012-02-01 21:08:35

标签: sql sql-server

我正在尝试编写一个查询来搜索数据库中的字符串列表。所有字符串都采用相同的格式 - 下面是一些字符串的示例

LP-01-MG-01
LN-01-MG-02
LP-02-MG-01
LP-02-MG-04

每个短划线代表字符串的不同部分。我需要找到这些字符串的最后一个数字序列的所有不同结果。例如,使用上面列出的4,需要返回01,02和04.我无法使用like命令和下划线表示单个字符通配符,或者最后使用%表示后面的任何内容。有人有什么建议吗?感谢。

编辑 - 所有项目在数字序列之后也有几个单词,不确定这对任何人都可以解决此问题的方式是否重要。

2 个答案:

答案 0 :(得分:2)

如果它们在最后一个连字符后面只有两位数,则可以使用大多数RDBMS包中提供的标准SQL RIGHT()LEFT()函数的组合。

SELECT RIGHT(LEFT(columnname, 11), 2) AS num FROM tbl;

如果您不想重复,请使用DISTINCT

SELECT DISTINCT RIGHT(LEFT(columnname, 11), 2) AS num FROM tbl;

SUBSTRING()

也可能,也许更清晰
SELECT DISTINCT SUBSTRING(columnname, 10, 2) AS num FROM tbl;

答案 1 :(得分:0)

DECLARE @S VARCHAR(100)
SET @S = 'LP-01-MG-01'

SELECT  RIGHT(@S, CHARINDEX('-', REVERSE(@S)) - 1)