我有一个问题,让我说我有一个带有值的列A:
te SN: 123454A / Lo
te SN: 12348887
te SN: 547896
我希望在:
之后检索+ /
之前的所有内容,但如果/
不存在,请在:
之后获取所有内容。
所以我的结果是:
123454A
12348887
547896
答案 0 :(得分:1)
由于您没有标记您的DBMS,因此这是算法。请自行查看DBMS中可用的字符串函数。
获取子字符串...
以下是如何在标准SQL中添加斜杠:col || ' /&#39 ;.添加斜杠可确保查找斜杠不会失败,我们要么读取原始字符串中存在的斜杠,要么直到原始字符串的末尾。
答案 1 :(得分:0)
我假设您使用MySql
select SUBSTRING(myColumn FROM LOCATE(':',myColumn)+2,FOR LOCATE('/',myColumn) -LOCATE(':',myColumn)-2) from myTable
如果你使用Mssql那么
select SUBSTRING(myColumn , CHARINDEX(':',myColumn)+2, CHARINDEX('/',myColumn) -CHARINDEX(':',myColumn)-2)
from myTable
我无法运行MSSQL所以我只是翻译了,希望它能正常工作
答案 2 :(得分:0)
这将找到冒号,然后添加两个。找到斜杠(如果它存在),如果它没有使用字符串的结尾。
DECLARE @MyTable TABLE ( ColumnA VARCHAR(50) )
INSERT @MyTable (ColumnA) VALUES ('te SN: 123454A / Lo'),
('te SN: 12348887'),
('te SN: 547896')
SELECT *,
SUBSTRING(COLUMNA, CHARINDEX(':', ColumnA) + 2,
CASE WHEN CHARINDEX('/', ColumnA) = 0 THEN LEN(ColumnA)
ELSE CHARINDEX('/', ColumnA) END -
(CHARINDEX(':', ColumnA) + 2)) [MySubString]
FROM @MyTable