成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用ORACLE函數實現按漢字拼音首字母查詢

數據庫 Oracle
如果要在ORACLE數據庫中實現按漢字拼音首字母查詢,應該如何實現呢?下面就教您一個使用ORACLE函數實現該功能的方法,供您從參考。

使用ORACLE函數,可以實現許多我們需要的功能,下面就教您如何使用ORACLE函數實現按漢字拼音首字母查詢,如果您對ORACLE函數使用方面感興趣的話,不妨一看。

列表一行漢字
WITH A AS
(SELECT '獲取漢字拼音首字母' W FROM DUAL)
SELECT SUBSTR(W, ROWNUM, 1) FROM A
CONNECT BY ROWNUM <= (SELECT LENGTH(W) FROM A);
返回結果








用漢字字符集對這個列表進行排序
WITH A AS
(SELECT '獲取漢字拼音首字母' W FROM DUAL)
SELECT SUBSTR(W, ROWNUM, 1) FROM A
CONNECT BY ROWNUM <= (SELECT LENGTH(W) FROM A)
ORDER BY NLSSORT(SUBSTR(W, ROWNUM, 1), 'NLS_SORT=SCHINESE_PINYIN_M');
返回結果








那么根據這個原理,上面輸入一個拼音A打頭的字"澳",后面輸入一個B大頭的字"吧",找到每個音節的起止的漢字是哪個
WITH A AS
(
SELECT ROWNUM RN, CHR(ROWNUM) C FROM DUAL CONNECT BY LEVEL <= 65535
)
SELECT * FROM A WHERE LENGTHB(C) = 2
AND RN > 32768
AND NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M') > NLSSORT('澳', 'NLS_SORT=SCHINESE_PINYIN_M')
AND NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M') < NLSSORT('吧', 'NLS_SORT=SCHINESE_PINYIN_M')
ORDER BY NLSSORT(C, 'NLS_SORT=SCHINESE_PINYIN_M');
根據返回的結果,就能看到,A的結束和B的開始的漢子分別是:“驁” “八”,依次類推可以找到其他的分界點,那么***的ORACLE函數就是如下:

CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS
V_COMPARE VARCHAR2(100);
V_RETURN VARCHAR2(4000);

FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYIN_M');
END;
BEGIN
FOR I IN 1..LENGTH(P_NAME) LOOP
V_COMPARE := F_NLSSORT(SUBSTR(P_NAME, I, 1));
IF V_COMPARE >= F_NLSSORT(' 吖 ') AND V_COMPARE <= F_NLSSORT('驁 ') THEN
V_RETURN := V_RETURN || 'a';
ELSIF V_COMPARE >= F_NLSSORT('八 ') AND V_COMPARE <= F_NLSSORT('簿 ') THEN
V_RETURN := V_RETURN || 'b';
ELSIF V_COMPARE >= F_NLSSORT('嚓 ') AND V_COMPARE <= F_NLSSORT('錯 ') THEN
V_RETURN := V_RETURN || 'c';
ELSIF V_COMPARE >= F_NLSSORT('咑 ') AND V_COMPARE <= F_NLSSORT('鵽 ') THEN
V_RETURN := V_RETURN || 'd';
ELSIF V_COMPARE >= F_NLSSORT('妸 ') AND V_COMPARE <= F_NLSSORT('樲 ') THEN
V_RETURN := V_RETURN || 'e';
ELSIF V_COMPARE >= F_NLSSORT('發 ') AND V_COMPARE <= F_NLSSORT('猤 ') THEN
V_RETURN := V_RETURN || 'f';
ELSIF V_COMPARE >= F_NLSSORT('旮 ') AND V_COMPARE <= F_NLSSORT('腂 ') THEN
V_RETURN := V_RETURN || 'g';
ELSIF V_COMPARE >= F_NLSSORT('妎 ') AND V_COMPARE <= F_NLSSORT('夻 ') THEN
V_RETURN := V_RETURN || 'h';
ELSIF V_COMPARE >= F_NLSSORT('丌 ') AND V_COMPARE <= F_NLSSORT('攈 ') THEN
V_RETURN := V_RETURN || 'j';
ELSIF V_COMPARE >= F_NLSSORT('咔 ') AND V_COMPARE <= F_NLSSORT('穒 ') THEN
V_RETURN := V_RETURN || 'k';
ELSIF V_COMPARE >= F_NLSSORT('垃 ') AND V_COMPARE <= F_NLSSORT('擽 ') THEN
V_RETURN := V_RETURN || 'l';
ELSIF V_COMPARE >= F_NLSSORT('嘸 ') AND V_COMPARE <= F_NLSSORT('椧 ') THEN
V_RETURN := V_RETURN || 'm';
ELSIF V_COMPARE >= F_NLSSORT('拏 ') AND V_COMPARE <= F_NLSSORT('瘧 ') THEN
V_RETURN := V_RETURN || 'n';
ELSIF V_COMPARE >= F_NLSSORT('筽 ') AND V_COMPARE <= F_NLSSORT('漚 ') THEN
V_RETURN := V_RETURN || 'o';
ELSIF V_COMPARE >= F_NLSSORT('妑 ') AND V_COMPARE <= F_NLSSORT('曝 ') THEN
V_RETURN := V_RETURN || 'p';
ELSIF V_COMPARE >= F_NLSSORT('七 ') AND V_COMPARE <= F_NLSSORT('裠 ') THEN
V_RETURN := V_RETURN || 'q';
ELSIF V_COMPARE >= F_NLSSORT('亽 ') AND V_COMPARE <= F_NLSSORT('鶸 ') THEN
V_RETURN := V_RETURN || 'r';
ELSIF V_COMPARE >= F_NLSSORT('仨 ') AND V_COMPARE <= F_NLSSORT('蜶 ') THEN
V_RETURN := V_RETURN || 's';
ELSIF V_COMPARE >= F_NLSSORT('侤 ') AND V_COMPARE <= F_NLSSORT('籜 ') THEN
V_RETURN := V_RETURN || 't';
ELSIF V_COMPARE >= F_NLSSORT('屲 ') AND V_COMPARE <= F_NLSSORT('鶩 ') THEN
V_RETURN := V_RETURN || 'w';
ELSIF V_COMPARE >= F_NLSSORT('夕 ') AND V_COMPARE <= F_NLSSORT('鑂 ') THEN
V_RETURN := V_RETURN || 'x';
ELSIF V_COMPARE >= F_NLSSORT('丫 ') AND V_COMPARE <= F_NLSSORT('韻 ') THEN
V_RETURN := V_RETURN || 'y';
ELSIF V_COMPARE >= F_NLSSORT('帀 ') AND V_COMPARE <= F_NLSSORT('咗 ') THEN
V_RETURN := V_RETURN || 'z';
END IF;
END LOOP;
RETURN V_RETURN;
END;

測試一下:
SELECT F_TRANS_PINYIN_CAPITAL('羅華') FROM DUAL   
返回 lh
使用的時候這樣查詢:
select name from users t1 where (t1.name = ? or F_TRANS_PINYIN_CAPITAL(t1.name) = ?)
如果里面的?參數傳遞的是“羅華”,就是查詢用戶名是落花的人,如果傳遞的是lh的話,查詢的就是拼音是lh的人
 

 

 

【編輯推薦】

oracle函數返回表的實現

帶您了解Oracle FBI索引

詳解如何將Oracle安裝為Linux服務

詳解Oracle多種表連接方式

DB2常用函數和Oracle的比較

責任編輯:段燃 來源: 互聯網
相關推薦

2010-10-14 16:45:54

MySQL查詢

2010-09-09 10:32:24

SQL函數拼音

2014-12-31 17:27:51

查詢城市源碼下載

2010-09-28 11:53:28

SQL查詢

2010-09-06 16:07:21

SQL函數

2010-07-21 17:02:35

SQL Server取

2020-11-23 09:49:00

Python開發拼音

2010-10-25 10:55:11

Oracle函數索引

2021-02-11 13:48:17

Python單詞大寫

2015-01-21 15:50:55

Android源碼全國城市列表

2010-07-01 16:52:53

SQL Server數

2020-12-17 12:27:52

Git文件名React

2010-11-25 11:57:42

MySQL查詢行號

2009-05-19 14:34:52

Oraclehash優化

2025-01-15 14:58:06

2022-09-24 16:53:05

Python工具辦公

2015-09-01 10:42:15

編程規范完全指南

2010-04-28 16:45:27

Oracle Inst

2010-10-27 17:00:32

oracle樹查詢

2024-02-26 08:05:00

Pythonpypinyin開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜久草 | 新91| 特黄色一级毛片 | 91在线播 | av网站观看 | 成人福利在线观看 | 日韩有码一区二区三区 | 欧美性大战xxxxx久久久 | 国产视频1 | www久久 | 成人免费一区二区三区视频网站 | 嫩草黄色影院 | 成人精品一区二区三区中文字幕 | 久久爆操 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 亚洲欧美视频一区 | 国产 欧美 日韩 一区 | 国产精品视频免费看 | 在线日韩av电影 | 黄色毛片视频 | 精品国产一区二区三区久久久蜜月 | 91精品入口蜜桃 | 欧美一级毛片免费观看 | 国产一区免费视频 | 日韩在线精品强乱中文字幕 | 一区二区三区在线免费看 | 久久se精品一区精品二区 | 综合久久久 | av手机免费在线观看 | 97国产在线观看 | 日韩另类视频 | 澳门永久av免费网站 | 国产乱精品一区二区三区 | 日韩国产欧美在线观看 | 国产精品成人久久久久 | 亚洲人成人一区二区在线观看 | 欧美日本韩国一区二区 | www.一级片 | 一区二区久久 | 91天堂网| 国产欧美视频一区 |