首页 > 解决方案 > 在某个字符 SQL 之后动态提取字符串

问题描述

我想从一个/任何符号之后的列中提取某个短语。例如,如果我想从SQL-Tutorial中提取Tutorial,下面的查询就足够了。

SELECT SUBSTRING('SQL-Tutorial', 5, 8) AS ExtractString;

如果我想从列中的以下字段中提取“-”或“_”之前或之后的所有内容怎么办?

标签: sqlsql-serverdatabasetsql

解决方案


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

推荐阅读