Как предотвратить маскировку данных в SQL2016

Когда я использую динамическую маскировку данных в SQL2016

(FUNCTION = 'partial(1,"XXXXXXX",0)')

оператор select возвращает значение

"XXXXXXX"

Для пустых полей, которые не являются допустимым значением для моего процесса.

Есть ли способ использовать маскирование данных, но только для полей со значениями (не пробелами и не нулями)?

Спасибо


person Andy Andriopoulos    schedule 27.08.2018    source источник


Ответы (1)


Вы можете использовать выражение CASE, которое возвращает пустую строку, когда рассматриваемое поле равно NULL или содержит только пробелы:

SELECT
    CASE WHEN COALESCE(REPLACE(field, ' ', ''), '') <> ''
         THEN field
         ELSE '' END AS field_masked
FROM yourTable;
person Tim Biegeleisen    schedule 27.08.2018
comment
Спасибо за помощь. Интересно, есть ли автоматизированный способ. Я хочу избежать расширенного рефакторинга моих процедур.... - person Andy Andriopoulos; 10.09.2018
comment
Вы можете отметить этот ответ как правильный, если он решил вашу проблему. - person Tim Biegeleisen; 11.09.2018
comment
Не совсем. Мне кажется странным маскировать пустое поле и писать после него код, чтобы исправить это. Какая от этого польза? - person Andy Andriopoulos; 14.09.2018