我試圖從一列中取數據,MyTable.SSN
,並將其複製到另一個表中,MyTable.SSNWithDashes
,只是格式不同。如果MyTable.SSN
沒有正好9位數字,我根本不在乎處理它。是否有可能重構此語句以刪除子查詢?
我已經試過這樣:
IF(SELECT LEN([SSN]) FROM [MyTable]) = 9
UPDATE [MyTable] SET [SSNWithDashes] = LEFT([SSN], 3) + '-' + SUBSTRING([SSN], 4, 2) + '-' + RIGHT([SSN], 4)
ELSE
UPDATE [MyTable] SET [SSNWithDashes] = NULL
雖然這個工作,它拋出一個錯誤:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
雖然我不明白什麼是警告說,我不是真的肯定如何去做這個不同的事情。
我該如何重構此刪除該警告(也許讀一點清潔劑)?
你的第一行是一個有價值的免責聲明。因爲如果SSNWithDashes現在對於LEN(SSN)不是9的任何行都有任何無效數據,那些行將保持這種狀態。如果你知道數據的性質,絕對是一個好方法,但如果你不知道數據的性質,那麼最好不要。 –
我同意你的意思,「安全」就是這個詞。我回答基於_「如果MyTable.SSN沒有9位數字,我根本不在意它的處理。」_在OP的問題中 – codingbiz