我在表中有一些特殊字符,主要是子彈(•)和方塊(■)(unicode字符?),當我做一個選擇時,我想忽略特殊字符但仍然返回文本的其餘部分。SQL Server - 忽略特殊字符
有沒有簡單的方法來做到這一點?
感謝
我在表中有一些特殊字符,主要是子彈(•)和方塊(■)(unicode字符?),當我做一個選擇時,我想忽略特殊字符但仍然返回文本的其餘部分。SQL Server - 忽略特殊字符
有沒有簡單的方法來做到這一點?
感謝
從來沒有體驗到這一點,但我聽說你需要獲得與A N前綴的回報。 查看下面的鏈接, http://support.microsoft.com/kb/239530
這可能有一些幫助。你可以用SQL來完成它,或者構建一個CLR方法並將它導入到你的SQL服務器實例中來做出決定。無論哪種方式,您都需要某種標量函數來比較字符。
嘗試使用此功能。以下代碼返回僅由Unicode字符代碼範圍組成的文本;在這種情況下,從0x0020 (space char)
到0x007E (tilde char)
,而其餘部分被省略。您可以定義一個或多個字符範圍以擴展此功能的有效字符。包含其代碼的Unicode字符列表可以例如here。
CREATE FUNCTION dbo.CharRangeOnly (@InputText NVARCHAR(4000))
RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @Index INT
DECLARE @BufferChar INT
DECLARE @OutputText NVARCHAR(4000)
SET @Index = 1
SET @OutputText = ''
WHILE @Index < LEN(@InputText) + 1
BEGIN
SET @BufferChar = UNICODE(SUBSTRING(@InputText, @Index, 1))
-- here you can specify the valid character range(s)
IF @BufferChar BETWEEN 0x0020 AND 0x007E
SET @OutputText = @OutputText + NCHAR(@BufferChar)
SET @Index = @Index + 1
END
RETURN @OutputText
END
您可以使用這種方式
SELECT dbo.CharRangeOnly (N'•■乕ขTeᶕst໙ ཙof β俼 ޠ➽Unᦗic៘ode✸ᾦ')
調用字符的這個瘋狂的混合功能出奇返回
'Test of Unicode'
@daemon_x你如何打電話給這個功能? – user441365 2011-06-09 17:17:13
更多關於我的信息? – 2011-06-09 21:38:04
@Andriy - 我已經提到範圍是從Unicode的字符代碼32(0x0020 - 空格)到126(0x007E - 代字號),我知道我可以選擇一個更好的名字;而不是'BasicLatinOnly',這有點讓人困惑。但你可以根據你的需要簡單地修改範圍。例如。如果你只想得到整個阿拉伯語腳本,那麼你將範圍從1536(0x600 - 標點符號)設置爲1791(0x6FF - 字母Heh與倒V),所以你將改變行'IF @BufferChar BETWEEN 32和126 '到IF @BufferChar在1536和1791之間' – 2011-06-09 21:52:23
通過「忽略」,你的意思是沒有返回他們結果或構造一個忽略它們的WHERE子句? – 2011-06-09 16:58:56
我想返回文本但刪除字符 – user441365 2011-06-09 17:01:06
@ user441365:如果知道確切的/特定的字符,那麼可以使用'replace'標量函數。 – 2011-06-09 17:05:41