程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL拼音首字母查詢

MySQL拼音首字母查詢

編輯:MySQL綜合教程

最近一個項目中有個模塊需要實現拼音首字母查詢功能,網上查了一下資料,自己重新修改整理了一下,使其滿足項目的要求。

實現過程如下:

1.創建一個獲取中英文大寫首字母函數:

DROP FUNCTION IF EXISTS `GET_FIRST_PINYIN_CHAR`;
CREATE FUNCTION `GET_FIRST_PINYIN_CHAR`(PARAM VARCHAR(255)) RETURNS VARCHAR(2) CHARSET utf8
BEGIN
	DECLARE V_RETURN VARCHAR(255);
	DECLARE V_FIRST_CHAR VARCHAR(2);
	SET V_FIRST_CHAR = UPPER(LEFT(PARAM,1));
	SET V_RETURN = V_FIRST_CHAR;
	IF LENGTH( V_FIRST_CHAR) <> CHARACTER_LENGTH( V_FIRST_CHAR ) THEN
	SET V_RETURN = ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(PARAM USING gbk),1)),16,10),
		0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
		0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
		0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
	'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
	END IF;
	RETURN V_RETURN;
END

2.使用的MySQL函數備注:

left(str,length):從左邊開始截取字符串

upper(str):將字符串轉為大寫

length(str):計算字符串長度,一個漢字算三個字符,一個數字或字母算一個字符

character_length(str):漢字、數字、字母都算一個字符

convert(expr USING encode):不同字符集之間的數據轉換

hex(Number or Str):將數字或字符串轉換為十六進制

conv(Number, from, to):將數字從原來的進制轉換成指定的進制

interval(N,N1,N2,N3,......):將N的值與後面的值列表進行比較。假如N < N1,則返回值為0;假如N < N2 等等,則返回值為1;假如N < N3 等等,則返回值為2;.....以此類推;假如N 為NULL,則返回值為 -1 。所有的參數均按照整數處理。為了這個函數的正確運行,必須滿足 N1 < N2 < N3 < ……< Nn

elt(N,str1,str2,str3,...):若N = 1,則返回值為 str1,若N = 2,則返回值為 str2,以此類推。若N 小於1或大於參數的數目,則返回值為 NULL。

3.使用樣例:

select name,get_first_pinyin_char(name) from user where get_first_pinyin_char(name) = 'W'

顯示結果:


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved