sql实现取汉字大写首字母

create   FUNCTION   [dbo].[f_GetPY](@str nvarchar(4000)) 
RETURNS   nvarchar(4000) 
AS 
BEGIN 
DECLARE   @py   TABLE( 
ch   char(1), 
hz1   nchar(1)   COLLATE   Chinese_PRC_CS_AS_KS_WS, 
hz2   nchar(1)   COLLATE   Chinese_PRC_CS_AS_KS_WS) 
INSERT   @py   SELECT   'A','','' 
UNION     ALL   SELECT  'B','','簿' 
UNION     ALL   SELECT  'C','','' 
UNION     ALL   SELECT  'D','','' 
UNION     ALL   SELECT  'E','','' 
UNION     ALL   SELECT  'F','','' 
UNION     ALL   SELECT  'G','','' 
UNION     ALL   SELECT  'H','','' 
UNION     ALL   SELECT  'J','','' 
UNION     ALL   SELECT  'K','','' 
UNION     ALL   SELECT  'L','','' 
UNION     ALL   SELECT  'M','','' 
UNION     ALL   SELECT  'N','','' 
UNION     ALL   SELECT  'O','','' 
UNION     ALL   SELECT  'P','','' 
UNION     ALL   SELECT  'Q','','' 
UNION     ALL   SELECT  'R','','' 
UNION     ALL   SELECT  'S','','' 
UNION     ALL   SELECT  'T','','' 
UNION     ALL   SELECT  'W','','' 
UNION     ALL   SELECT  'X','','' 
UNION     ALL   SELECT  'Y','','' 
UNION     ALL   SELECT  'Z','','' 
DECLARE   @i   int 
SET   @i=PATINDEX('%[吖-做]%'   COLLATE   Chinese_PRC_CS_AS_KS_WS,@str) 
WHILE   @i> 0 
SELECT   @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch) 
,@i=PATINDEX('%[吖-做]%'   COLLATE   Chinese_PRC_CS_AS_KS_WS,@str) 
FROM   @py 
WHERE   SUBSTRING(@str,@i,1)   BETWEEN   hz1   AND   hz2 
RETURN(@str) 
END 

原文地址:https://www.cnblogs.com/SoftWareIe/p/6709188.html