как объединить строки с нулями - PullRequest
0 голосов
/ 28 октября 2019

Как мы объединяем строки, которые могут иметь нули?

Я получаю следующую ошибку:

enter image description here

... при попытке выполнить:

@blocks_merged = 
SELECT
AN_52_ENC_CSN_ID AS an_53_enc_csn_id,
string.IsNullOrEmpty(ARTERIAL_LINE_BLOCK_START_TIME) ? ("ARTERIAL_LINE_BLOCK_START_TIME: " + ARTERIAL_LINE_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(BLOCK_PERIPHERAL_BLOCK_START_TIME) ? ("BLOCK_PERIPHERAL_BLOCK_START_TIME: " + BLOCK_PERIPHERAL_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(BLOCK_SPINAL_BLOCK_START_TIME) ? ("BLOCK_SPINAL_BLOCK_START_TIME: " + BLOCK_SPINAL_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(CENTRAL_LINE_BLOCK_START_TIME) ? ("CENTRAL_LINE_BLOCK_START_TIME: " + CENTRAL_LINE_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(CSE_BLOCK_START_TIME) ? ("CSE_BLOCK_START_TIME: " + CSE_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(SPINAL_DRAIN_BLOCK_START_TIME) ? ("SPINAL_DRAIN_BLOCK_START_TIME: " + SPINAL_DRAIN_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(TEE_BLOCK_START_TIME) ? ("TEE_BLOCK_START_TIME: " + TEE_BLOCK_START_TIME) :""
+string.IsNullOrEmpty(TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME) ? ("TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME: " + TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME) :"" AS BLOCK_START,

string.IsNullOrEmpty(ARTERIAL_LINE_BLOCK_END_TIME) ? ("ARTERIAL_LINE_BLOCK_END_TIME: " + ARTERIAL_LINE_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(BLOCK_PERIPHERAL_BLOCK_END_TIME) ? ("BLOCK_PERIPHERAL_BLOCK_END_TIME: " + BLOCK_PERIPHERAL_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(BLOCK_SPINAL_BLOCK_END_TIME) ? ("BLOCK_SPINAL_BLOCK_END_TIME: " + BLOCK_SPINAL_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(CENTRAL_LINE_BLOCK_END_TIME) ? ("CENTRAL_LINE_BLOCK_END_TIME: " + CENTRAL_LINE_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(CSE_BLOCK_END_TIME) ? ("CSE_BLOCK_END_TIME: " + CSE_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(SPINAL_DRAIN_BLOCK_END_TIME) ? ("SPINAL_DRAIN_BLOCK_END_TIME: " + SPINAL_DRAIN_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(TEE_BLOCK_END_TIME) ? ("TEE_BLOCK_END_TIME: " + TEE_BLOCK_END_TIME) :""
+string.IsNullOrEmpty(TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME) ? ("TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME: " + TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME) :"" AS BLOCK_END
FROM @blocks;

Как объединить строки, которые могут иметь нулевые значения?

1 Ответ

1 голос
/ 04 ноября 2019

Код пытается объединить первую строку со следующим сравнением вашего списка троичных операторов. По сути, вместо оценки троичного оператора вы сначала объединяете его логическое выражение.

Решение: добавьте дополнительные скобки в ваш скрипт:

@blocks_merged =
SELECT
    AN_52_ENC_CSN_ID AS an_53_enc_csn_id,
    (
        (string.IsNullOrEmpty(ARTERIAL_LINE_BLOCK_START_TIME) ? ("ARTERIAL_LINE_BLOCK_START_TIME: " + ARTERIAL_LINE_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(BLOCK_PERIPHERAL_BLOCK_START_TIME) ? ("BLOCK_PERIPHERAL_BLOCK_START_TIME: " + BLOCK_PERIPHERAL_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(BLOCK_SPINAL_BLOCK_START_TIME) ? ("BLOCK_SPINAL_BLOCK_START_TIME: " + BLOCK_SPINAL_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(CENTRAL_LINE_BLOCK_START_TIME) ? ("CENTRAL_LINE_BLOCK_START_TIME: " + CENTRAL_LINE_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(CSE_BLOCK_START_TIME) ? ("CSE_BLOCK_START_TIME: " + CSE_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(SPINAL_DRAIN_BLOCK_START_TIME) ? ("SPINAL_DRAIN_BLOCK_START_TIME: " + SPINAL_DRAIN_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(TEE_BLOCK_START_TIME) ? ("TEE_BLOCK_START_TIME: " + TEE_BLOCK_START_TIME) : "")
        +(string.IsNullOrEmpty(TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME) ? ("TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME: " + TRANSVENOUS_PACING_WIRE_BLOCK_START_TIME) : "")
    ) AS BLOCK_START,
    (
        (string.IsNullOrEmpty(ARTERIAL_LINE_BLOCK_END_TIME) ? ("ARTERIAL_LINE_BLOCK_END_TIME: " + ARTERIAL_LINE_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(BLOCK_PERIPHERAL_BLOCK_END_TIME) ? ("BLOCK_PERIPHERAL_BLOCK_END_TIME: " + BLOCK_PERIPHERAL_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(BLOCK_SPINAL_BLOCK_END_TIME) ? ("BLOCK_SPINAL_BLOCK_END_TIME: " + BLOCK_SPINAL_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(CENTRAL_LINE_BLOCK_END_TIME) ? ("CENTRAL_LINE_BLOCK_END_TIME: " + CENTRAL_LINE_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(CSE_BLOCK_END_TIME) ? ("CSE_BLOCK_END_TIME: " + CSE_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(SPINAL_DRAIN_BLOCK_END_TIME) ? ("SPINAL_DRAIN_BLOCK_END_TIME: " + SPINAL_DRAIN_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(TEE_BLOCK_END_TIME) ? ("TEE_BLOCK_END_TIME: " + TEE_BLOCK_END_TIME) : "")
        +(string.IsNullOrEmpty(TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME) ? ("TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME: " + TRANSVENOUS_PACING_WIRE_BLOCK_END_TIME) : "")
    ) AS BLOCK_END
FROM @blocks;

Иногда дополнительные скобки могут показаться избыточными, ноони помогают организовать ваш код и убедиться, что операции выполняются в правильном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...