Инструкция SQL для замены SSM в базе данных - PullRequest
0 голосов
/ 10 октября 2011

Как мне создать запрос на замену номера социального страхования из середины текстового блока?

Таблица выглядит так:

column1     column2
11          text SSN more text

SSN тоже не все отформатированы, некоторые похожи на xxx-xx-xxxx, а некоторые - просто на числовую строку xxxxxxxx.

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Если вы хотите, например, отредактировать номера SSN # из вашей таблицы, вы можете использовать функцию PATINDEX, чтобы найти номера SSN # и REPLACE команда для преобразования их во что-то, что скрывает число. Вот пример (обратите внимание, что этот код предполагает, что в значении будет только один номер SSN одновременно. Если может быть несколько различных номеров SSN, будет найден только первый):

update
    MyTable
set
    Column2 = replace(Column2, 
        case
            when patindex('% [0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] %', Column2) <> 0 
                then substring(Column2, patindex('% [0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] %', Column2) + 1, 11)
            when patindex('% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %', Column2) <> 0 
                then substring(Column2, patindex('% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %', Column2) + 1, 9)
            else ''
        end,
        case
            when patindex('% [0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] %', Column2) <> 0 
                then 'xxx-xx-xxxx'
            when patindex('% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %', Column2) <> 0 
                then 'xxxxxxxxx'
            else ''
        end)

Пример входных данных:

1 | text 123-45-6789 more text
2 | testing 894315466 and blah blah blah
3 | testing no ssn 348933 result

Пример вывода:

1 | text xxx-xx-xxxx more text
2 | testing xxxxxxxxx and blah blah blah
3 | testing no ssn 348933 result
0 голосов
/ 10 октября 2011

В зависимости от текста, имеющегося у вас в поле, вы можете заменить все гипсы, если вы пытаетесь нормализовать SSN в формате без гипса. Однако, если ваш другой текст, в который вложен SSN, может содержать переносы, приведенное ниже решение не будет работать. В конечном итоге он вытянет все гипсы.

UPDATE tableA
SET column2 = REPLACE(column2,'-','');

В противном случае вы имеете дело с поиском номера SSN на основе 9 числовых цифр подряд или 3 цифр, за которыми следует перенос, затем 2 цифры, перенос, затем четыре. Это потребует от вас прохождения всего поля, отметки отправной точки, чтобы начать замену и выполнить работу по синтаксическому анализу.

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