sql
1create table test ( 2 id integer not null auto_increment, 3 col1 varchar(255), 4 col2 varchar(255), 5 primary key(id) 6); 7insert into test (col1, col2) values ('xaaa', 'aaa'); 8insert into test (col1, col2) values ('bbbx', 'bbb'); 9insert into test (col1, col2) values ('cccxddd', 'ccc'); 10insert into test (col1, col2) values ('xeeex', 'eee'); 11insert into test (col1, col2) values ('xfffxggg', 'fff');
SQLでの文字列処理についてお聞きしたいです。col1
をSQLだけで処理してcol2
と同じにすることはできるでしょうか。
xaaa
=>aaa
(先頭にx
があったら除く)bbbx
=>bbb
(終端にx
があったら除く)cccxddd
=>ccc
(途中にx
があったらx
以降を除く)xeeex
=>eee
(先頭にも終端にもx
があったらそれぞれ除く)xfffxggg
=>fff
(先頭にも途中にもx
があったら先頭と途中のx
以降を除く)
col1に相当する情報はどこから来るのですか? あれ、違うか、既にテーブル上にそういうデータが有る場合のUPDATE文を質問していますか?
これDBは何使ってるんですか?mysql?postgre?sqlserver?plsql?
すでにテーブル上にそういうデータが入っている状況を考えています。不要な文字列を含んでDBに入ってきてしまう状況は避けられず、文字列を処理してUPDATEするか、別のテーブルに退避させるために処理した上でselectするなどしたいと考えています。
mysqlです
削除したいxは常に1文字なのか、それともいろんなパターンが有るのか。想定されるパターンを全部書き出してほしい。
パターンはこれですべてです。不要な1文字が書き出したパターンで入ってくることがあります。
条件ではcol1にcol2の内容を上書きでコピーすればいいように見えるんだけど、そんな単純な話では無い?
col2は説明のためにつけたのですが、実際にはありません。テーブルの中にはcol1だけがある状態です。col1には不要な文字が入り込むことがあり、それをSQLだけで(DBの機能だけで)処理できないかと考えているところです。
①途中からxが出現したらxから後方を全部消す。②先頭のxを消す。ってルールでなんとかなりそうな気がしますね。
回答2件
あなたの回答
tips
プレビュー