首页 > 数据库 >Sql Server使用函数获取拼音码

Sql Server使用函数获取拼音码

时间:2023-11-02 10:12:55浏览次数:32  
标签:SET Word 拼音码 UNION PY Server Str Sql SELECT

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

-- 使用
update dbo.Dict_Medicine set PyCode = [dbo].[Fun_GetPY](MedicineName)  where ID = 1 ;
  • 这个的缺点就是不能够识别多音字。只能做简单的识别,其实还是不太建议使用此方法
  • 使用函数而不使用存储过程的原因是函数可以在 Select 语句钟执行。而存储过程不行。存储过程可以返回多个参数,函数只能返回一个。

标签:SET,Word,拼音码,UNION,PY,Server,Str,Sql,SELECT
From: https://www.cnblogs.com/chongyao/p/17804781.html

相关文章

  • Mysql 几种数据类型
    数值类型类型 大小 范围(有符号) 范围(无符号) 用途TINYINT 1Bytes (-128,127) (0,255) ......
  • linux 导出和导入mysql数据库
    https://blog.csdn.net/qq_35453862/article/details/117742619从华为云导出导入阿里云......
  • MYSQL innoDB CLuster搭建
    机器信息节点主机名IP地址安装软件节点1yanglinux01192.168.222.128mysql,mysql-shell,mysql-router,MGR-Primary节点2yanglinux02192.168.222.132mysql,mysql-shell,mysql-router,MGR-Secondary节点3yanglinux03192.168.222.133mysql,mysql-shell,MGR-Secondary三台机器分别......
  • nginx server_name配置多域名的坑
    问题介绍项目配置了多个域名,如下,php代码中有获取 $_SERVER['SERVER_NAME'] 的值server{ server_namea.demo.comb.demo.com;...}当访问a.demo.com时,其获取的值是符合预期的。但是当访问b.demo.com时,其获取的值还是a.demo.com,导致代码中的判断出现错误......
  • mysql新增插入的时候如何写存储过程
    sql初始化脚本createtableACT_RESULT_LOG(onlineseqidVARCHAR(32),businessidVARCHAR(32),becifnoVARCHAR(32),ivisresultVARCHAR(32),createdbyVARCHAR(32),createddateDATE,updatebyVARCHAR(32),updateddateDAT......
  • 904-907 Prometheus自动发现机制 kube-state-metrics和metrics-server Prometheus监
    一、Prometheus自动发现机制服务发现机制:为了实现自动将被监控目标添加到PermethusPrometheus数据源的配置分为静态配置和动态发现,常见为以下几类:static_configs:静态服务发现,即将配置直接写到配置文件或Configmapfile_sd_config:文件服务器发现,创建一个专门配置target的配置文......
  • mysql 5.7之后新增的json数据类型
    如图,可以直接把json数据存入mysql数据库,读取时也可以根据json中,属性名来读取。加上虚拟列,即可,如下图 ......
  • Server-Worker 模式
    常见并发编程模式,用于构建服务器应用程序和处理并发请求。也称:"Master-Slave"模式或"Producer-Consumer"模式具体实现方式可以有所不同,但思想一致。这种模式的两种角色:服务器(Server)或主控(Master):负责接收、处理和分发任务。监听来自客户端或请求队列的请求,并将这些请求分发......
  • sql 对查询结果去重,对重复数据update打标记
       1.先分组查询出来重复的SELECTsubstring(mgr_addvcd,1,6),gate_namefromyg_gate_base_bwheremgr_addvcdlike'3408%'groupbysubstring(mgr_addvcd,1,6),gate_namehavingcount(*)>1 2.再查出来重复的所有数据select*fromyg_gate_base_......
  • PostgreSQL技术大讲堂 - 第31讲:SQL调优技巧
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。 第31讲:SQL调优技巧 第31讲预告:10月28日(周六)19:30-20:30......