Vincents優れた答えは...最初の文字列全体の文字列の唯一総額のために素晴らしい作品
しかし、あなたはすべての単語の最初の文字を大文字にしたい場合はどのようなテーブル列の文字列に?
例:「アブビル高等学校」私はStackOverflowの中でこれに答えを見つけることができた
。上記の例を確かなものにするために、私はGoogleで見つけたいくつかの答えを一緒に綴じなければならなかった。これはネイティブ関数ではなく、MySQLバージョン5以上で可能なユーザ作成関数です。
MySQL上のスーパー/管理者ステータスがある場合、または自分のコンピュータにローカルmysqlをインストールしている場合は、データベースに格納されているFUNCTION(ストアドプロシージャのような)を作成し、今後のすべてのSQLクエリで使用できますdbの任意の部分。
UPDATE Table_name
SET column_name = UC_Words(column_name)
を挿入するには:
は、私が作成した関数は、私はこのような完全な列を更新できるように、私はただのMySQLのネイティブ関数に建てられたような「UC_Words」と呼ばれるこの新しい機能を使用することができます関数の作成中にMySQLの標準デリミタ(;)を変更した後、関数作成スクリプトの後で標準に戻しました。個人的には、出力もUTF8 CHARSETにしたいと思っていました。
関数の作成=
DELIMITER ||
CREATE FUNCTION `UC_Words`(str VARCHAR(255)) RETURNS VARCHAR(255) CHARSET utf8_general_ci
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE bool INT DEFAULT 1;
DECLARE punct CHAR(17) DEFAULT '()[]{},[email protected];:?/';
SET s = LCASE(str);
WHILE i < LENGTH(str) DO
BEGIN
SET c = SUBSTRING(s, i, 1);
IF LOCATE(c, punct) > 0 THEN
SET bool = 1;
ELSEIF bool=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
SET bool = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET bool = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END ||
DELIMITER ;
これは、文字列内の複数の単語の大文字最初の文字を出力御馳走に動作します。
あなたのMySQLログインユーザー名に十分な特権があると仮定すると、そうでない場合はテーブルを変換するためにあなたの個人用マシンに一時DBを設定することはできません。
ありがとう - 私はまず小文字に設定する必要があることを忘れていました。ありがとう – Chin