[解決済み] 1つのフィールドから2つのフィールドに値を分割する
2022-08-03 19:03:19
質問
テーブルのフィールド
membername
があり、そこにはユーザーの姓と名の両方が含まれています。これらを 2 つのフィールドに分割することは可能でしょうか。
memberfirst
,
memberlast
?
すべてのレコードは、"Firstname Lastname" (引用符とスペースを含まない)という形式になっています。
どのように解決するのですか?
残念ながら、MySQL には文字列を分割する機能はありません。しかし ユーザ定義関数 を作成することができます。
- MySQL スプリットストリング関数 by Federico Cargnelutti
その機能で
DELIMITER $$
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END$$
DELIMITER ;
とすると、以下のようにクエリを構築することができます。
SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
SPLIT_STR(membername, ' ', 2) as memberlast
FROM users;
ユーザー定義関数を使いたくない、クエリが多少冗長になるのはかまわないという場合は、次のようにすることもできます。
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 1), ' ', -1) as memberfirst,
SUBSTRING_INDEX(SUBSTRING_INDEX(membername, ' ', 2), ' ', -1) as memberlast
FROM users;
関連
-
[解決済み】MySQLの「ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再起動してみてください」を回避する方法
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] 配列をチャンクに分割する
-
[解決済み] Vimで縦割りから横割りに高速で切り替えるには
-
[解決済み] CSVファイルをMySQLのテーブルにインポートするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL サービスとデータベース管理
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
Mysqlのソート機能の詳細
-
[解決済み] ユニークなテーブル/エイリアスではない
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)
-
[解決済み] デリミタを使ったMySQLの部分文字列抽出
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法