『壹』 sql 語句獲取多漢字拼音縮寫如何寫成SQL update 更新語句
什麼資料庫,如果是oracle的提供給你,不用客氣,就是分少了些。
CREATE OR REPLACE FUNCTION PUB_GET_PY(p_漢字 CHAR DEFAULT '%')
RETURN CHAR
IS
/********************************************************************
過程名稱:PUB_GET_PY
功能:生成漢字拼音的首字元
********************************************************************/
v_漢字內碼 NUMBER(8);
v_拼音 CHAR(1);
BEGIN
v_漢字內碼 := ASCII(p_漢字);
IF v_漢字內碼 BETWEEN 45217 AND 45252 THEN
v_拼音 := 'A';
ELSIF v_漢字內碼 BETWEEN 45253 AND 45760 THEN
v_拼音 := 'B';
ELSIF v_漢字內碼 BETWEEN 45761 AND 46317 THEN
v_拼音 := 'C';
ELSIF v_漢字內碼 BETWEEN 46318 AND 46825 THEN
v_拼音 := 'D';
ELSIF v_漢字內碼 BETWEEN 46826 AND 47009 THEN
v_拼音 := 'E';
ELSIF v_漢字內碼 BETWEEN 47010 AND 47296 THEN
v_拼音 := 'F';
ELSIF v_漢字內碼 BETWEEN 47297 AND 47613 THEN
v_拼音 := 'G';
ELSIF v_漢字內碼 BETWEEN 47614 AND 48116 THEN
v_拼音 := 'H';
ELSIF v_漢字內碼 BETWEEN 48117 AND 49061 THEN
v_拼音 := 'J';
ELSIF v_漢字內碼 BETWEEN 49062 AND 49323 THEN
v_拼音 := 'K';
ELSIF v_漢字內碼 BETWEEN 49324 AND 49895 THEN
v_拼音 := 'L';
ELSIF v_漢字內碼 BETWEEN 49896 AND 50370 THEN
v_拼音 := 'M';
ELSIF v_漢字內碼 BETWEEN 50371 AND 50613 THEN
v_拼音 := 'N';
ELSIF v_漢字內碼 BETWEEN 50614 AND 50621 THEN
v_拼音 := 'O';
ELSIF v_漢字內碼 BETWEEN 50622 AND 50925 THEN
v_拼音 := 'P';
ELSIF v_漢字內碼 BETWEEN 50926 AND 51386 THEN
v_拼音 := 'Q';
ELSIF v_漢字內碼 BETWEEN 51387 AND 51445 THEN
v_拼音 := 'R';
ELSIF v_漢字內碼 BETWEEN 51446 AND 52217 THEN
v_拼音 := 'S';
ELSIF v_漢字內碼 BETWEEN 52218 AND 52697 THEN
v_拼音 := 'T';
ELSIF v_漢字內碼 BETWEEN 52698 AND 52979 THEN
v_拼音 := 'W';
ELSIF v_漢字內碼 BETWEEN 52980 AND 53640 THEN
v_拼音 := 'X';
ELSIF v_漢字內碼 BETWEEN 53641 AND 54480 THEN
v_拼音 := 'Y';
ELSIF v_漢字內碼 BETWEEN 54481 AND 55289 THEN
v_拼音 := 'Z';
ELSE
v_拼音 := NULL;
END IF;
RETURN v_拼音;
END PUB_GET_PY;
CREATE OR REPLACE FUNCTION PUB_GET_STRING_PY(strs varchar2)
return varchar2
is
/***********************************
過程名稱:PUB_GET_STRING_PY
功能:生成漢字字元串的拼音首字元
**********************************/
v_length number;
v_char varchar2(2);
v_charlength number;
v_charPY varchar2(2);
i int:=1;
myresult varchar2(500):='';
begin
--獲取字元串長度
v_length:=length(strs);
while i<=v_length
loop
--按順序取得字元
v_char:=substr(strs,i,1);
v_charlength:=lengthb(rtrim(v_char));
v_charPY:=rtrim(v_char);
--判斷是否是漢字
if v_charlength=2 then
v_charPY:=pub_get_py(rtrim(v_char));
end if;
--將拼音進行連接
myresult:=myresult || v_charPY;
i:=i+1;
end loop;
return myresult;
end PUB_GET_STRING_PY;
/
『貳』 SQL語句如何實現將資料庫表中某個欄位的漢字批量轉為拼音
sql可以實現 但是你要准備 建立一個龐大的字典庫所有漢字拼音全存入 然後寫函數一個個比對返回
我都是用程序寫的 sql實現比較蛋痛
『叄』 什麼SQL語句可以提取出一組中文的拼音簡碼
1、Sql語句是操作資料庫用的,所以,資料庫中沒有的東西是沒辦法調出來的
2、輸入品名就會出現相關的簡名、名字、拼音、拼音縮寫之類的,是通過編程語言來實現的的
『肆』 怎麼在SQL SERVER中把漢字 轉化為 拼音碼
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 漢字轉拼音,若有重復的在拼音加1
題主意思,表a已經有欄位hz,現在要更新py這列?這樣的話,只要update就行了,為什麼說最好是函數實現呢?還是說題主想要selecthz,func(hz)froma這樣的呢?
函數。
首先需要一個解析漢字到拼音的方法,這里有一個包,你可以復制過去直接執行。
腳本地址:
http://www.cnblogs.com/mellowsmile/p/4601288.html
附代碼:
--不是我不貼,代碼太多貼不上,題主還是去上面那個地址復制吧,注意復制全部。
在SQL窗口執行。
我這里建了一個測試表test,數據顯示如下:
select a.* from test a;
題主,如此,可否?
『陸』 如何在sql 中將表中一整列的漢字全部變成拼音首字母
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
調用這個函數就可以
『柒』 資料庫oracle(plsql)怎麼把漢字轉化成拼音首字母,如果非漢字字元 (英文or數字),返回原字元不變
oracle漢字轉拼音(獲得全拼/拼音首字母/拼音截取等)效果如下: Oracle 字元集 GBK 沒有問題 , UTF -8 需要修改一下Sql代碼
--oracle漢字轉拼音 PACKAGE
--1.獲得全拼
SELECT GETHZPY.GETHZFULLPY('漢字') FROM DUAL;結果 : HanZi
--2.拼音首字母
SELECT GETHZPY.GETHZPYCAP('漢字') FROM DUAL;結果 : HZ
--3.拼音截取等
SELECT GETHZPY.GETHZPYCAPSUBSTR('漢字', 0, 1) FROM DUAL;結果 : H
代碼部分太長掛在附件上 以下代碼如果在 PL/SQL Developer 執行的話,選擇 Command Window 粘貼.
附件在最下面.
oracle漢字轉拼音package_獲得全拼——拼音首字母_拼音截取等.zip (35.9 KB)
『捌』 怎樣寫SQL存儲過程漢字轉換拼音簡碼sqlserver2000
使用SQL Server Management Studio在列表中查看即可。 步驟: 1、登錄SQL Server Management Studio。 2、左邊的樹點擊要查詢的庫左邊的「+」,點開後會變成「-」,下同。 3、點擊可編程性-存儲過程
『玖』 漢字轉拼音的sql函數為什麼用到這些字 :驁簿錯鵽樲鰒腂夻攈穒鱳旀桛漚曝囕鶸蜶籜鶩鑂韻咗,求原理
沒人回答,自己找到了答案,整個sql排序規則是按照拼音排序, 以此句sql為例:'A' AS PY,N'驁' AS word 」驁「字代表的是以A開頭的拼音,並且音調是也要排最後的一個字,讀做「ào」,所以得出在這個區間的漢字首字母都為A,以此類推可查出其他字母開頭的漢字首字母