如何在sql 中将表中一整列的汉字全部变成拼音首字母 ?

如何在sql 中将表中一整列的汉字全部变成拼音首字母 ?
如将b_client 表中的clientname一列全变成拼音首字母

CREATE FUNCTION Fun_GetPY
(
@Str NVARCHAR(4000)
)

RETURNS NVARCHAR(4000)

AS

BEGIN
DECLARE @Word NCHAR(1)
DECLARE @PY NVARCHAR(4000)

SET @PY = ''

WHILE LEN(@Str) > 0
BEGIN
SET @Word = LEFT(@Str, 1)

--如果非汉字字符,返回原字符
SET @PY = @PY + (CASE WHEN UNICODE(@Word) BETWEEN 19968 AND 19968 + 20901
THEN (SELECT TOP 1 PY FROM(
SELECT 'A' AS PY, N'骜' AS WORD
UNION ALL SELECT 'B',N'簿'
UNION ALL SELECT 'C',N'错'
UNION ALL SELECT 'D',N'鵽'
UNION ALL SELECT 'E',N'樲'
UNION ALL SELECT 'F',N'鳆'
UNION ALL SELECT 'G',N'腂'
UNION ALL SELECT 'H',N'夻'
UNION ALL SELECT 'J',N'攈'
UNION ALL SELECT 'K',N'穒'
UNION ALL SELECT 'L',N'鱳'
UNION ALL SELECT 'M',N'旀'
UNION ALL SELECT 'N',N'桛'
UNION ALL SELECT 'O',N'沤'
UNION ALL SELECT 'P',N'曝'
UNION ALL SELECT 'Q',N'囕'
UNION ALL SELECT 'R',N'鶸'
UNION ALL SELECT 'S',N'蜶'
UNION ALL SELECT 'T',N'箨'
UNION ALL SELECT 'W',N'鹜'
UNION ALL SELECT 'X',N'鑂'
UNION ALL SELECT 'Y',N'韵'
UNION ALL SELECT 'Z',N'咗') T
WHERE WORD >= @Word COLLATE Chinese_PRC_CS_AS_KS_WS
ORDER BY PY ASC)
ELSE @Word
END)
SET @Str = RIGHT(@Str, LEN(@Str) - 1)
END
RETURN @PY
END

调用这个函数就可以
温馨提示:内容为网友见解,仅供参考
无其他回答

如何在sql 中将表中一整列的汉字全部变成拼音首字母 ?
BEGIN SET @Word = LEFT(@Str, 1)--如果非汉字字符,返回原字符 SET @PY = @PY + (CASE WHEN UNICODE(@Word) BETWEEN 19968 AND 19968 + 20901 THEN (SELECT TOP 1 PY FROM(SELECT 'A' AS PY, N'骜' AS WORD UNION ALL SELECT 'B',N'簿'UNION ALL SELECT 'C',N'错'UNION ALL...

通过vb如何实现按中文词语拼音的首字母排序?
Text1.Text = "转汉语拼音"End Sub Private Sub Command1_Click()Text2.Text = GetPY(Text1.Text)End Sub '获得输入名称的首字拼音 Private Function GetPY(ByVal strParmeter As String) As String Dim intTmp As String, i As Long intTmp = Asc(Mid(strParmeter, 1, 1))If int...

sql中的collation干什么用
当然,在创建临时表时若对字段定义加上Collate Database_Default ,也可以方便地解决潜在的排序规则冲突,比如上一节中提到的存储过程,只要做如下修改即可。 -- 1. Create Temp Table. CREATE TABLE #TagsTable ( TagName NVARCHAR(64) COLLATE DATABASE_DEFAULT ) 结束语对于专业的SQLer来说,排序规则的应用场景还有...

sql 语句中那些是聚合函数?
insert into test_group values(1,1004);insert into test_group values(1,1005);3、查询表中所有记录,select t.*, rowid from test_group t,4、编写sql,分别求聚合函数max、min、sum、avg,见:select max(value), min(value), sum(value), avg(value) from test_group t,...

升序排列与降序排列的区别
升序排序与降序排序的排序,数据顺序是相反的成对应关系。1、在正常的数值型数据中,升序排列是按照数据从低到高排列,降序排列是数据从高到低排列:2、一般字母会按照26个英文字母的前后顺序进行排序,升序为A-Z,降序为Z-A。

EXCEL表格的函数
PHONETIC 提取文本字符串中的拼音(汉字注音)字符 PROPER 将文本值的每个字的首字母大写 REPLACE、REPLACEB 替换文本中的字符 REPT 按给定次数重复文本 RIGHT、RIGHTB 返回文本值中最右边的字符 SEARCH、SEARCHB 在一个文本值中查找另一个文本值(不区分大小写) SUBSTITUTE 在文本字符串中用新文本替换旧文本 T 将参数...

在EXCEL表中,如何累计计算连续出现的个数?
PHONETIC 从文本串中提取拼音 (furigana) 字符PROPER 将文本值中每个单词的首字母设置为大写REPLACE 替换文本中的字符REPT 按给定次数重复文本RIGHT 返回文本值中最右边的字符SEARCH 在其他文本值中查找文本值(不区分大小写)SUBSTITUTE 在文本串中使用新文本替换旧文本T 将参数转换为文本TEXT 设置数字的格式并将其转换...

二十万数据,如何查询?
看如下一些人用的拼音码方案的部分代码:Public Function PinYin(Tstr As String) As Long Dim I As Long I = Asc(Tstr)If I >= Asc("啊") And I < Asc("芭") Then PinYin = 1 If I >= Asc("芭") And I < Asc("擦") Then PinYin = 2 If I >= Asc("擦") And I < ...

谁能将excel中的所有函数列张表(带含义和使用示例),如果带有技巧更好...
逻辑: 如果其所有参数均为 TRUE,则返回 TRUEAREAS 函数查找与引用: 返回引用中涉及的区域个数ASC 函数文本: 将字符串中的全角(双字节)英文字母或片假名更改为半角(单字节)字符ASIN 函数数学和三角函数: 返回数字的反正弦值ASINH 函数数学和三角函数: 返回数字的反双曲正弦值ATAN 函数数学和三角函数: 返回数字的...

如何在sql 中将表中一整列的汉字全部变成拼音首字母 ?
SET @Word = LEFT(@Str, 1)--如果非汉字字符,返回原字符 SET @PY = @PY + (CASE WHEN UNICODE(@Word) BETWEEN 19968 AND 19968 + 20901 THEN (SELECT TOP 1 PY FROM(SELECT 'A' AS PY, N'骜' AS WORD UNION ALL SELECT 'B',N'簿'UNION ALL SELECT 'C',N'错'UNION ALL ...

相似回答