SELECTクエリの名前フィールドから数字を削除する必要があります。数字は文字列の最後にある可能性があります。例は次のとおりです。
Some Name
Namewithnospace
NamewithInt 100 <--- I want to remove this int from the string
文字列の最初の部分にスペースが含まれないことを保証することはできませんが、数字が文字列の最後の部分になることはかなり確実です。また、ほとんどのデータにはスペースがありません。
REVERSE()
を使用した解決策が必要であることがわかりSUBSTRING()
ますが、スペースがないデータ、またはスペースはあるが整数がないデータをマングルしない方法を理解することはできません。
編集:以下は、Ollieが私に向けたMySQL C関数の定義であり、正規表現に変更が加えられています(関数の出力にスペースと句読点を含めるため)。
DELIMITER !
DROP FUNCTION IF EXISTS alphas!
CREATE FUNCTION alphas ( str VARCHAR(255) )
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret VARCHAR(255) DEFAULT '';
DECLARE c VARCHAR(1);
SET len = CHAR_LENGTH( str );
REPEAT
BEGIN
SET c = MID( str, i, 1 );
IF c REGEXP '[[:alpha:]]' OR c REGEXP '[[:space:]]' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END;
UNTIL i > len END REPEAT;
RETURN ret;
END !
DELIMITER ;