#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Данные выглядят следующим образом:
Initiative: Credible Sources;
Initiative: Just in Time;
Initiative: Database Normalization;
Я хочу, чтобы это выглядело так:
Credible Sources
Just in Time
Database Normalization
Довольно просто избавиться от одного или другого.
Это:
SELECT DISTINCT LEFT(OPTIONAL_FIELD_2, CHARINDEX(';', OPTIONAL_FIELD_2 ';')-1) AS OPTIONAL_FIELD_2
FROM my_table
ORDER BY OPTIONAL_FIELD_2
Дает мне это:
Инициатива: надежные источники
Инициатива: как раз вовремя
Инициатива: нормализация базы данных
И это:
SELECT DISTINCT RIGHT(OPTIONAL_FIELD_2, LEN(OPTIONAL_FIELD_2)-12) AS OPTIONAL_FIELD_2
FROM my_table
ORDER BY OPTIONAL_FIELD_2
Дает мне это:
Credible Sources;
Just in Time;
Database Normalization;
Трудно понять, как объединить их.
Ответ №1:
Как насчет простого использования substring()
?
select replace(substring(option_field_2, 13, 999), ';', '')
Или, если вы не знаете, какой длины префикс:
select replace(stuff(option_field_2, 1, charindex(':', option_field_2) 1, ''), ';', '')
Вот скрипка db<> .
Комментарии:
1. Спасибо, @gordon-linoff, это работает. Я склонен переосмысливать вещи, и обычно это простое решение 🙂