Có thể tôi đang ngớ ngẩn nhưng kiểm tra truy vấn bên dưới tôi đã viết với một số được cung cấp, điều này có vẻ hiệu quả hơn một chút (tùy thuộc vào lập chỉ mục).
Mã này hơi ngu ngốc, nhưng không có gì để nói rằng nếu nó trông ngu ngốc nhưng nó hoạt động thì nó không ngu ngốc.
Begin
Declare @text Varchar(30);
Set @text = 'qWeRtY kEyBoArD TEST<>&''"X';
Declare @1 Varchar(2)= ' a'
, @2 Varchar(2)= ' b'
, @3 Varchar(2)= ' c'
, @4 Varchar(2)= ' d'
, @5 Varchar(2)= ' e'
, @6 Varchar(2)= ' f'
, @7 Varchar(2)= ' g'
, @8 Varchar(2)= ' h'
, @9 Varchar(2)= ' i'
, @10 Varchar(2)= ' j'
, @11 Varchar(2)= ' k'
, @12 Varchar(2)= ' l'
, @13 Varchar(2)= ' m'
, @14 Varchar(2)= ' n'
, @15 Varchar(2)= ' o'
, @16 Varchar(2)= ' p'
, @17 Varchar(2)= ' q'
, @18 Varchar(2)= ' r'
, @19 Varchar(2)= ' s'
, @20 Varchar(2)= ' t'
, @21 Varchar(2)= ' u'
, @22 Varchar(2)= ' v'
, @23 Varchar(2)= ' w'
, @24 Varchar(2)= ' x'
, @25 Varchar(2)= ' y'
, @26 Varchar(2)= ' z';
Set @text=' '+@text
Select LTrim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Lower(@text) ,
@1 , Upper(@1)) ,
@2 , Upper(@2)) ,
@3 , Upper(@3)) ,
@4 , Upper(@4)) ,
@5 , Upper(@5)) ,
@6 , Upper(@6)) ,
@7 , Upper(@7)) ,
@8 , Upper(@8)) ,
@9 , Upper(@9)) ,
@10 , Upper(@10)) ,
@11 , Upper(@11)) ,
@12 , Upper(@12)) ,
@13 , Upper(@13)) ,
@14 , Upper(@14)) ,
@15 , Upper(@15)) ,
@16 , Upper(@16)) ,
@17 , Upper(@17)) ,
@18 , Upper(@18)) ,
@19 , Upper(@19)) ,
@20 , Upper(@20)) ,
@21 , Upper(@21)) ,
@22 , Upper(@22)) , @23 ,
Upper(@23)) , @24 , Upper(@24)) ,
@25 , Upper(@25)) , @26 , Upper(@26)));
end