2014-02-19 49 views
1

我想從select中的varchar中刪除小寫字母。 有沒有可能做到這一點,而不必實現一個功能?如何從varchar中刪除小寫字母

declare @s varchar(max) = 'ThisIsADifferentTest' 
select /*<some opperation with the varchar>*/@s 

我想獲得 'TIADT'

提示:

select intersection(@s,UPPER(@s)) 
+0

只是ASCII'a-z'還是包含重音/非英文字符呢? –

+0

只是ASCII [a-z]可以工作 – Adminiculo

+0

當然我想避免有20 +替換。 – Adminiculo

回答

1

也許是:如果我們能夠執行VARCHAR處理之間的布爾交集它會做最好的表現方式是使用CLR和正則表達式。但是你可以使用輔助數字表。

我使用下面的spt_values進行演示。你應該create a permanent one

DECLARE @s VARCHAR(2047) = 'ThisIsADifferentTest'; 

WITH Nums 
    AS (SELECT number 
     FROM master..spt_values 
     WHERE type = 'P' 
       AND number BETWEEN 1 AND 2047) 
SELECT CAST((SELECT SUBSTRING(@s, number, 1) 
      FROM Nums 
      WHERE number <= LEN(@s) 
        AND SUBSTRING(@s, number, 1) LIKE '[A-Z]' COLLATE Latin1_General_Bin 
      ORDER BY number 
      FOR XML PATH('')) AS VARCHAR(2047)) 
相關問題