在 T-SQL 中,如何顯示字串中每個字符的 ASCII 碼?
字串示例:
Adrs_line1
ABCD
我想證明這一點:
Adrs_line1_ASCII
65|66|67|68
目前,我這樣做(我手動增加數字):
ASCII(SUBSTRING(Adrs_line1, 1, 1))
這樣做的全部目的是找出哪個字符破壞了地址。因為此代碼不適用于 5% 的地址:
PARSENAME(REPLACE(REPLACE(ADDRESSSTREET, CHAR(13), ''), CHAR(10), '.'), 3) as Adrs_line1,
PARSENAME(REPLACE(REPLACE(ADDRESSSTREET, CHAR(13), ''), CHAR(10), '.'), 2) as Adrs_line2,
PARSENAME(REPLACE(REPLACE(ADDRESSSTREET, CHAR(13), ''), CHAR(10), '.'), 1) as Adrs_line3,
編輯 :
有關我的問題的更多資訊:
在我們的 ERP 中,地址顯示為回車符(第 1 行、第 2 行和第 3 行)。但是在資料庫中,這三行被連接在一個字串中。所以,我必須通過檢測回車的字符來分隔三行。通常是 char(10) 或 char(13),但對于 5% 的地址,這是我無法手動找到的另一個字符。
uj5u.com熱心網友回復:
這是您可能能夠使用和適應的東西。
創建一個將回傳任何被視為“壞”字符的表值函式:
create or alter function dbo.FindBadAscii (@v varchar(max))
returns table as
return
select v [Char], Ascii(v) [Ascii]
from (
select top (Len(@v)) Row_Number() over(order by (select null)) n
from master.dbo.spt_values
) d
cross apply(values(Substring(@v, d.n, 1)))x(v)
where Ascii(v)<32 and Ascii(v) not in (9,10,13)
然后你可以像這樣測驗它:
select * from dbo.FindBadAscii ('a' Char(10) 'b' Char(20) 'c')
這標識了不是 tab/lf/cr 的任何“控制”字符
結果
20
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/425349.html
下一篇:如何減少SQL視圖中的子查詢
