enter image description here我試圖從名爲NOTE_DESC的列中去除數字。如果字符有數字,則應填充SPECIAL列。如果沒有其他的JUNK列應該有特殊字符,我想擦洗。但是,我得到一個變量,顯示爲與NOTE_DESC相同的SPECIAL,並且JUNK列爲空或爲空。SQL從SQL結果中的自由文本中刪除字符
IF OBJECT_ID('tempdb.dbo.#DUPE_SUSPECT', 'U') IS NOT NULL
DROP TABLE #DUPE_SUSPECT
SELECT
ROW_NUMBER() OVER (ORDER BY CAST(NOTE_DESC AS varchar)) AS ROW_NUM,
[NOTE_ID],
CAST([NOTE_DESC] AS varchar) [NOTE_DESC],
CASE
WHEN CHARINDEX('PEND KEY', CAST([NOTE_DESC] AS varchar)) > 0 THEN SUBSTRING(CAST([NOTE_DESC] AS varchar), CHARINDEX('PEND KEY', CAST([NOTE_DESC] AS varchar)), 24)
WHEN CHARINDEX('"MACESS WORK ITEM(S):', CAST([NOTE_DESC] AS varchar)) > 0 THEN SUBSTRING(CAST([NOTE_DESC] AS varchar), CHARINDEX('"MACESS WORK ITEM(S):', CAST([NOTE_DESC] AS varchar)), 38)
WHEN LEFT(CAST([NOTE_DESC] AS varchar), 2) = 'PK' THEN LEFT(CAST([NOTE_DESC] AS varchar), 18)
WHEN LEFT(CAST([NOTE_DESC] AS varchar), 1) NOT LIKE '%[A-Z]%' AND
LEFT(CAST([NOTE_DESC] AS varchar), 1) NOT IN ('...', ',,:', ':', '.', '!', ',', '?') THEN LEFT(CAST([NOTE_DESC] AS varchar), 18)
ELSE ''
END [SPECIAL],
[CREATED_BY_ID],
[CREATED_TIMESTAMP],
[CREATED_TEAM_ID],
[SERV_CCP_INQ_KEY],
[ACTION_TIMESTAMP] INTO #DUPE_SUSPECT
FROM [dbo].[Staging_CCP_SERVICE_INQ_NOTES]
WHERE CREATED_TIMESTAMP IS NOT NULL
ALTER TABLE #DUPE_SUSPECT
ADD JUNK varchar(max) NULL
SELECT
*
FROM #DUPE_SUSPECT
ORDER BY ROW_NUM
-- Create the variables used in parsing the string
DECLARE @count int,
@position int,
@strText char(5000),
@row_num int,
@x int,
@pend_key char(20),
@character char(1),
@junk char(5000);
-- Initialize the variables.
SET @count = 100
SET @row_num = 1
SET @position = 1;
WHILE @row_num < @count
BEGIN
SET @strText = (SELECT
[NOTE_DESC]
FROM #DUPE_SUSPECT
WHERE ROW_NUM = @row_num)
WHILE @position < LEN(@strText)
BEGIN
SET @character = SUBSTRING(@strText, @position, 1)
IF @character IN ('1', '2', '3', '4', '5', '6', '7', '8', '9')
BEGIN
SET @pend_key = @pend_key + @character
END
ELSE
BEGIN
SET @junk = @junk + @character
END
SET @position = @position + 1
END
UPDATE #DUPE_SUSPECT
SET SPECIAL = @pend_key,
JUNK = @junk
WHERE ROW_NUM = @row_num
SET @row_num = @row_num + 1
SET @position = 1
SET @pend_key = ''
END
請提供樣本數據。 – Tyron78
所有行都填充,但JUNK除外,特殊行將填充 – lance9877