Как удалить только определенные элементы в столбце с несколькими словами, перечисленными в ячейке - PullRequest
0 голосов
/ 12 мая 2019

SQL-сервер

Из моей колонки я хочу только "исключить" определенное содержимое из ячейки.

Пример 1:

select 
    owner
where
    owner not in ('LLC');

Я пытаюсь исключить ООО из: "16 SE 2ND STREET LLC" Кажется, работает, только если я хочу удалить всю строку из набора данных, что я не делаю.

Пример 2:

select 
    owner
where
    owner not in ('&');

Я пытаюсь исключить только те столбцы, которые имеют & (амперсанд)

1 Ответ

2 голосов
/ 12 мая 2019

Используйте часть запроса SELECT <column-expression>... для манипулирования значениями («проекция»). WHERE часть для фильтрации строк, а не значений. (Порядок логической оценки запроса SELECT на самом деле FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY, поэтому часть SELECT не оценивается первой, несмотря на то, что она является первым ключевым словом.

Быстрый способ - использовать REPLACE( owner, 'LLC', '' ), но это также заменит "LLC", расположенный в другом месте строки:

SELECT
    REPLACE( [owner], 'LLC', '' ) AS [owner],
    ...
FROM
    tableName

В качестве альтернативы, вы можете использовать CASE WHEN, чтобы удалить LLC только если он находится в конце строки:

SELECT
    CASE
        WHEN SUBSTRING( [owner], LEN( [owner] ) - 4, 4 ) = ' LLC' THEN
            SUBSTRING( [owner], 1, LEN( [owner] ) - 4 )
        ELSE
            [owner]
    END AS [owner],
    ...
FROM
    tableName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...