質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

343閲覧

あるカラムの情報を、特定の文字より前の文字を全て抽出して、別カラムに保存したい

NN77

総合スコア59

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/04/01 11:58

編集2019/04/02 11:51

実現したいこととご質問

現在railsとmysqlでdeviseで会員登録機能をつけたアプリケーションを開発しており、
以下の処理を行ないたいのですが、実装方法がわからず困っております。

-対象テーブル:以下

+------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | email | varchar(255) | NO | UNI | | | | encrypted_password | varchar(255) | NO | | | | | reset_password_token | varchar(255) | YES | UNI | NULL | | | reset_password_sent_at | datetime | YES | | NULL | | | remember_created_at | datetime | YES | | NULL | | | sign_in_count | int(11) | NO | | 0 | | | current_sign_in_at | datetime | YES | | NULL | | | last_sign_in_at | datetime | YES | | NULL | | | current_sign_in_ip | varchar(255) | YES | | NULL | | | last_sign_in_ip | varchar(255) | YES | | NULL | | | account_id | varchar(255) | YES | | NULL | | | created_at | datetime | NO | | NULL | | | updated_at | datetime | NO | | NULL | | +------------------------+--------------+------+-----+---------+----------------+

-行いたいこと
ユーザーが会員登録する際に、
emailの@より前の文字全てを自動的に抽出して、
account_idに保存できるようにしたい

わからないことは以下2点です。
どちらか一方でもおわかりになる方がいらっしゃいましたら、ぜひアドバイスいただけないでしょうか。

1「特定の文字より前を抽出」する方法。
※正規表現を使うらしいところまでは見当がついたのですが、やりたいことに合致した正規表現が調べても見つけられませんでしたorz

2「抽出した結果を会員登録と同時に別カラムに保存」する

何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/04/01 14:34 編集

insert したいのでしょうか? idはAUTO_INCREMENTですか? せめて、テーブルの定義は追記して下さい。
NN77

2019/04/02 11:52

こちら、ご指摘くださりありがとうございますm_ _m 追記いたしました。 はい、updateではなくinsertしたいです。 idはAUTO_INCREMENTです。
guest

回答2

0

INSTR で'@'の位置を取得できます。最初からその1つ前までの文字列をSUBSTRで抜き出せますよね。

投稿2019/04/01 12:17

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NN77

2019/04/02 11:29

こちらありがとうございます!なるほどそのような組み合わせ方ができるんですね! イメージが湧きましたので、一度操作してみます。
NN77

2019/04/03 08:18

こちら早々にご回答いただきありがとうございました。 rubyで同様の方法で抽出まで行なうことができましたm_ _m
guest

0

ベストアンサー

SUBSTRING_INDEX()を使用するのが簡潔そうです。
idは省略するとして、後は必要な項目を追加して下さい。

SQL

1insert into 対象テーブル(email, account_id) values 2('hoge@fuga', SUBSTRING_INDEX('hoge@fuga','@',1))

投稿2019/04/03 00:22

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NN77

2019/04/03 08:17

ありがとうございます。 こちらで一発解決しそうですm_ _m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問