文字と数字が混在する列があります。列からアルファベット文字の最初のセットを取得する必要があります。整数が検出されるとすぐに、私はもう必要ありません。たとえば、次のようになります。
5行を取る:
- S123J90
- SF91K88
- JK12K99
- X129PL9
- ABCD123
これらの5行から次のデータが必要です
- S
- SF
- JK
- バツ
- あいうえお
ネストされたREPLACEクエリについて多くの話を見つけましたが、もっと良いオプションがあると確信していますか?
注:すべての行は、少なくとも1つの英字で始まります
更新:この関数の変更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
注:構文が外れる可能性があるため、この回答の関数を再コーディングしました。