如何創建用於替換文本塊中間的社會安全號碼的查詢?用於替換數據庫中SSM的SQL語句
表是這樣的:
column1 column2
11 text SSN more text
攻擊核潛艇是不是所有格式相同或者,有些是類似這樣的:XXX-XX-XXXX有的只是一個數字串XXXXXXXX。
如何創建用於替換文本塊中間的社會安全號碼的查詢?用於替換數據庫中SSM的SQL語句
表是這樣的:
column1 column2
11 text SSN more text
攻擊核潛艇是不是所有格式相同或者,有些是類似這樣的:XXX-XX-XXXX有的只是一個數字串XXXXXXXX。
如果您想要例如從您的表中編輯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
根據您所在領域的文字,假設您試圖將SSNs規範化爲無版式格式,您可以對所有版本進行替換。但是,如果您的SSN嵌套的其他文本可能包含超鏈接,則下面的解決方案將不起作用。它最終會拉出所有的邪惡。
UPDATE tableA
SET column2 = REPLACE(column2,'-','');
否則,你所面對的發現基於關在一排9個數字或3位的SSN,然後是連字符,然後2個數字,一個連字符,然後是四個。這將需要你通過整個領域,標記你的出發點,開始替換和做你的解析工作。
如果你能描述了需要遵循的規則,我們可以表達它的SQL爲您服務。我們需要您想要執行的精確規則。 (注意:例如,第二個格式示例是8位數字,而不是9)。 – MatBailie
另外,用什麼替換SSN? – jadarnel27