【发布时间】:2015-02-19 10:49:43
【问题描述】:
我需要如下拆分字母数字字符串,例如“20A30D40I10O”。允许的字符:A,D,I,O 任意顺序及其对应的百分比。
+------+------+ |科尔A |科尔B | +------+------+ | 20 |一个 | | 30 | D | | 40 |我 | | 10 | ○ | +------+------+我曾尝试编写相同的查询。
声明@Val Varchar(100) 设置@Val = '20A30D40I10O' 声明 @origTable 表(名称 VARCHAR(1000)) 插入@origTable(名称)值(@Val) SELECT SUBSTRING(name,1,2),SUBSTRING(name,3,1)FROM @origTable where name LIKE '%[0-9][0-9]%' and (SUBSTRING(name,3,1) LIKE ' A' OR SUBSTRING(name,3,1) LIKE 'D' OR SUBSTRING(name,3,1) LIKE 'I' OR SUBSTRING(name,3,1) LIKE 'O') 联合所有 SELECT SUBSTRING(name,4,2),SUBSTRING(name,6,1) FROM @origTable where name LIKE '%[0-9][0-9]%' and (SUBSTRING(name,6,1) LIKE ' A' OR SUBSTRING(name,6,1) LIKE 'D' OR SUBSTRING(name,6,1) LIKE 'I' OR SUBSTRING(name,6,1) LIKE 'O') 联合所有 SELECT SUBSTRING(name,7,2),SUBSTRING(name,9,1) FROM @origTable where name LIKE '%[0-9][0-9]%' and (SUBSTRING(name,9,1) LIKE ' A' OR SUBSTRING(name,9,1) LIKE 'D' OR SUBSTRING(name,9,1) LIKE 'I' OR SUBSTRING(name,9,1) LIKE 'O') 联合所有 SELECT SUBSTRING(name,10,2),SUBSTRING(name,12,1) FROM @origTable where name LIKE '%[0-9][0-9]%' and (SUBSTRING(name,12,1) LIKE ' A' OR SUBSTRING(name,12,1) LIKE 'D'OR SUBSTRING(name,12,1) LIKE 'I' OR SUBSTRING(name,12,1) LIKE 'O')但如果字符串包含 1 位百分比,则此查询不足以拆分字符串。例如:'98D2O'
【问题讨论】:
-
它们总是采用这种格式吗?百分比、字母、百分比等。
-
是的.. 它将仅采用 PLPLPLPL 格式(P-百分比,L-字母)。字母是 A,D,I,O
标签: sql sql-server sql-server-2008