我想从一个/任何符号后面的列中提取某个短语。 例如,如果我想从 SQL-Tutorial 中提取 Tutorial ,则以下查询就足够了。
SELECT SUBSTRING('SQL-Tutorial', 5, 8) AS ExtractString;
如果我想从列中以下字段中提取“-”或“ _”之前或之后的所有内容怎么办?
答案 0 :(得分:1)
如果您使用的是SQL Server,则下面的代码可以提取char'-'之前和之后的所有内容,其中where条件用于验证是否首先有char'-'可以像这样拆分
SELECT
LEFT([COLUMN],charindex('-',[COLUMN])-1) as BeforeString,
RIGHT([COLUMN],len([COLUMN])-charindex('-',[COLUMN])) as AfterString
FROM [TABLE]
WHERE charindex('-',[COLUMN])<>0
答案 1 :(得分:1)
CREATE TABLE #Table1
([COLN] varchar(24))
;
INSERT INTO #Table1
([COLN])
VALUES
('SQL-Tutorial'),
('Oracle-Tutorial'),
('IBM DB2-Tutorial'),
('Sybase ASE-Tutorial'),
('PostgreSQL-Tutorial'),
('MariaDB-Tutorial'),
('MySQL-Tutorial'),
('Teradata-Tutorial'),
('IBM Informix-Tutorial'),
('Amazon SimpleDB-Tutorial')
;
SELECT PARSENAME(REPLACE(coln,'-','.'),2) [before],
PARSENAME(REPLACE(coln,'-','.'),1) [after] from #Table1
输出
before after
SQL Tutorial
Oracle Tutorial
IBM DB2 Tutorial
Sybase ASE Tutorial
PostgreSQL Tutorial
MariaDB Tutorial
MySQL Tutorial
Teradata Tutorial
IBM Informix Tutorial
Amazon SimpleDB Tutorial
答案 2 :(得分:1)
您可以使用SUBSTRING和CHARINDEX来获取--p等任何字符的前后
SELECT SUBSTRING(@String,0,CHARINDEX('-',@String,0)) As Before_str,
SUBSTRING(@String,CHARINDEX('-',@String)+1,LEN(@String)) As After_str