Переменная SQL в другой столбец - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужно показать набор строк в новый столбец на основе значения некоторых столбцов.

Я пытался использовать isnull (name, variable = '' null), но не работает

DECLARE @NAME VARCHAR (MAX)
DECLARE @TEL VARCHAR (MAX)

SET @NAME = '- inNAME '
SET @TEL = '- inTEL '

SELECT IIF(NAME IS NULL, @NAME = '- notinNAME'), IIF(TEL IS NULL, @TEL = '- notinTEL;), (@NAME+ @TEL)  AS RESULT FROM ADDRESS

NAME    TEL    RESULT
NULL    07     - notinNAME - inTEL
ARK     NULL   - inNAME - notinTEL
ARK    07      - inNAME - inTEL
NULL   NULL    - notinNAME - notinTEL

1 Ответ

4 голосов
/ 27 сентября 2019

Это то, что вы пытаетесь сделать?

SELECT CONCAT(CASE WHEN NAME IS NULL THEN '- notinNAME' ELSE '' END,
              CASE WHEN TEL IS NULL THEN '- notinTEL' ELSE '' END
             )
FROM ADDRESS;

Вы не можете использовать переменные по нескольким причинам.Во-первых, SQL Server не позволяет назначать переменные в SELECT, а также возвращать значения.

Что более важно, SQL (в целом) не гарантирует порядок вычисления выражений в SELECT,Ваша формулировка предполагает определенный порядок оценки, поэтому она не будет работать.

РЕДАКТИРОВАТЬ:

Если вы хотите использовать переменные:

SELECT CONCAT(CASE WHEN NAME IS NULL THEN @NAME ELSE '' END,
              CASE WHEN TEL IS NULL THEN @TEL ELSE '' END
             )
FROM ADDRESS;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...