sql中怎么根据汉字的拼音首字母查询

sql中怎么根据汉字的拼音首字母查询,第1张

-- SQLServer:

---测试数据---

if object_id('[pactinfo]') is not null drop table [pactinfo]

go

create table [pactinfo]([ID] int,[pactname] varchar(4))

insert [pactinfo]

select 1,'正常' union all

select 2,'中国' union all

select 3,'做饭' union all

select 4,'加发'

 

---引用前辈们的一个函数---

create function   f_GetPy(@str   nvarchar(4000)) 

returns   nvarchar(4000) 

as 

begin 

declare   @strlen   int,@re   nvarchar(4000) 

declare   @t   table(chr   nchar(1)   collate   Chinese_PRC_CI_AS,letter   nchar(1)) 

insert   into   @t(chr,letter) 

    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 ' 

    select   @strlen=len(@str),@re= ' ' 

    while   @strlen> 0 

    begin 

        select   top   1   @re=letter+@re,@strlen=@strlen-1 

            from   @t   a   where   chr <=substring(@str,@strlen,1) 

            order   by   chr   desc 

        if   @@rowcount=0 

            select   @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1 

    end 

    return(@re) 

end 

---查询---

select 

   

from 

  [pactinfo]

where

  left(dbof_GetPy(pactname),1)='Z'

---结果---

ID          pactname 

----------- -------- 

1           正常

2           中国

3           做饭

(所影响的行数为 3 行)

Go语言的string模块包含了ToLower和ToUpper函数,用于将字符串转换成小写和大写

代码如下:

package main

import (

"fmt"

"strings"

)

func main() {

fmtPrintln(stringsToUpper("hello world"))

}

代码如下:

USE [database]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo][getPinYin] (@str varchar(500) = '')

RETURNS varchar(500) AS

BEGIN

Declare @strlen int,

@return varchar(500),

@ii int,

@c char(1),

@chn nchar(1)

--//初始化变量

Declare @pytable table(

chn char(2) COLLATE Chinese_PRC_CS_AS NOT NULL,

py char(1) COLLATE Chinese_PRC_CS_AS NULL,

PRIMARY KEY (chn)

)

insert into @pytable values('吖', 'A')

insert into @pytable values('八', 'B')

insert into @pytable values('嚓', 'C')

insert into @pytable values('咑', 'D')

insert into @pytable values('妸', 'E')

insert into @pytable values('发', 'F')

insert into @pytable values('旮', 'G')

insert into @pytable values('铪', 'H')

insert into @pytable values('丌', 'I')

insert into @pytable values('丌', 'J')

insert into @pytable values('咔', 'K')

insert into @pytable values('垃', 'L')

insert into @pytable values('呒', 'M')

insert into @pytable values('拏', 'N')

insert into @pytable values('噢', 'O')

insert into @pytable values('妑', 'P')

insert into @pytable values('七', 'Q')

insert into @pytable values('呥', 'R')

insert into @pytable values('仨', 'S')

insert into @pytable values('他', 'T')

--insert into @pytable values('屲', 'U')

--insert into @pytable values('屲', 'V')

insert into @pytable values('屲', 'W')

insert into @pytable values('夕', 'X')

insert into @pytable values('丫', 'Y')

insert into @pytable values('帀', 'Z')

select @strlen = len(@str), @return = '', @ii = 0

//循环整个字符串,用拼音首字母替换汉字

while @ii < @strlen

begin

select @ii = @ii + 1, @chn = substring(@str , @ii, 1)

if @chn > 'z' --//检索输入的字符串中有中文字符

SELECT @c = max(py)

FROM @pytable

where chn <= @chn

else

set @c=@chn

set @return=@return+@c

end

return @return

END

以上就是关于sql中怎么根据汉字的拼音首字母查询全部的内容,包括:sql中怎么根据汉字的拼音首字母查询、golang 把中文转换为首字母的方法、SQL Server 如何提取汉字首字母等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9666116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存