Динамическое извлечение строки после определенного символа SQL - PullRequest
0 голосов
/ 31 октября 2018

Я хочу извлечь определенную фразу из столбца после / любого символа. Например, если я хочу извлечь Tutorial из SQL-Tutorial , достаточно выполнить следующий запрос.

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

Что если я хочу извлечь все до или после '-' или '_' из следующих полей в столбце?

  • SQL-Tutorial
  • Oracle-Tutorial
  • IBM DB2-Tutorial
  • Sybase ASE-Tutorial
  • PostgreSQL-Tutorial
  • MariaDB-Tutorial
  • MySQL-учебник
  • Teradata-учебник
  • IBM Informix-Tutorial
  • Amazon SimpleDB-Tutorial

Ответы [ 3 ]

0 голосов
/ 31 октября 2018
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
0 голосов
/ 31 октября 2018

Вы можете использовать SUBSTRING и CHARINDEX, чтобы получить до и после любого символа, например -

SELECT SUBSTRING(@String,0,CHARINDEX('-',@String,0)) As Before_str,
  SUBSTRING(@String,CHARINDEX('-',@String)+1,LEN(@String)) As After_str
0 голосов
/ 31 октября 2018

Если вы используете SQL Server, приведенный ниже код может извлекать все до и после символа '-', условие where может быть проверено, если есть символ '-' на первом месте для такого разделения

SELECT 
LEFT([COLUMN],charindex('-',[COLUMN])-1) as BeforeString,
RIGHT([COLUMN],len([COLUMN])-charindex('-',[COLUMN])) as AfterString
FROM [TABLE]
WHERE charindex('-',[COLUMN])<>0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...