我有一列包含字母和數字的混合。我需要從列中獲取第一組字母字符。只要遇到一個整數,我不希望任何更多..例如:Mysql只提取字母字符
取5行:
- S123J90
- SF91K88
- JK12K99
- X129PL9
- ABCD123
我需要這些5行中的以下數據
- 小號
- SF
- JK
- X
- ABCD
我發現講了很多關於嵌套查詢替換,但我敢肯定有一個更好的選擇在那裏?
注:所有行與至少一個字母字符開頭
更新:我用這個功能http://www.rummandba.com/2011/02/mysql-function-to-remove-non.html的修改如下
DROP FUNCTION IF EXISTS remove_non_alpha_char_f //
CREATE FUNCTION remove_non_alpha_char_f (prm_strInput varchar(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE v_char VARCHAR(1);
DECLARE v_parseStr VARCHAR(255) DEFAULT ' ';
WHILE (i <= LENGTH(prm_strInput)) DO
SET v_char = SUBSTR(prm_strInput,i,1);
IF v_char REGEXP '^[A-Za-z ]+$' THEN #alpha
SET v_parseStr = CONCAT(v_parseStr,v_char);
SET i = i + 1;
ELSE
SET i=256;
END IF;
END WHILE;
RETURN trim(v_parseStr);
END
注:我已經重新編碼的功能對於這個答案,所以語法可能會失效。
你需要mysql來爲你做這個嗎?在sql –
以外的任何編程語言中執行相當簡單,我可以在應用程序代碼中執行此操作。儘管我有29M行..如果我可以在MySql中找到一個快速方法,我相信它會運行得更快。 – Niall
ifound一個你可能會覺得有用的鏈接http://forums.mysql.com/read.php?10137433,137433顯然它不是很簡單,它肯定是我的知識之外。我最好的選擇是創建一個小腳本和另一個列(或表)。該腳本遍歷所有記錄一次,然後將提取的字符存儲在新列中。稍後,我會嘗試通過更改此記錄的存儲方式來更新此列。 –