- ベストアンサー
SQLで後方の文字列を置換する方法
tarutaru3の回答
TBL_A.A LIKE RTRIM(TBL_B.B, '0') || '%' でいけるのではないでしょうか? RTRIMの第二の引数は省略可能で省略時は単一の空白だそうです。 この質問で少し調べてみましたが、RTRIMにこんな使い方ができるとは、私も初めて知りました。
関連するQ&A
- 絞込みする時のSQLの書き方
お世話になります。 絞込みする時のSQLの書き方について教えてください。 具体的には テーブル名tbl01,フィールド名f01,f02とした場合 1.f01もしくはf02にAという文字を含むレコードを抽出。 SQL = "select * from tbl01 where f01 like '%A%' or f02 like '%A%'" 2.続いて、1で抽出したデータからf01もしくはf02にBという文字を含むレコードを抽出するSQL文 SQL = ????? あくまでも、1と2を満たす条件を1つのSQL文で表す方法です。一旦、1の結果をワークテーブルに落とし、そこから2だけのSQL文を実行するわけではありません。
- ベストアンサー
- その他(データベース)
- 1つのSQL文で文字列を置換する方法を教えてください。
以下のようなテーブルで、項目aに入力されているデータに含まれている[aaaa]を[bbbb]に置き換えたいのですが、どなたか1回で置き換えられるSQL文を教えていただけないでしょうか。 どうぞ、宜しくお願い致します。 table:TEST [項目名]/[データ] a / aaaaみかんりんご ■変換後■ [項目名]/[データ] a / bbbbみかんりんご
- ベストアンサー
- その他(データベース)
- SQL2005 で 複数列でのユニークの仕方
SQL Server2005 Expressを使っているのですが。 下記のような3列の項目からなるテーブルがあり、ABCはそれぞれ数字として。 No1,No2,No3 A, B, A, F, B, C, B, F, B, , C, E, F 数字をユニークし、結果を A,B,C,E,F としたいのですが。 列(No1)だけでのユニークでよいなら Select Distinct(No1) ・・・・・ と書けばよいのでしょうが。 現在は、各列でユニークし、配列にいれて重複は削除するやり方をしているのですが。 この例では3列ですが実際は5列以上あります。 SQLでスマートなやり方はないでしょうか?
- 締切済み
- SQL Server
- ある条件でのSQLの取得方法について
以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー 項目1 10 X 20 Y ・テーブルB キー 項目2 項目3 10 5 C 10 6 D 12 6 E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は 別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、 複数件あるかも知れません。 無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと 同じレコードに、項目2が同じデータの情報を出力します。 項目2が同じデータが無い場合はこの情報は出力しません。 項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー フラグ 項目1 項目2 項目3 項目2が同じキー 項目2が同じ値 10 テーブルA X 10 テーブルB 5 C 10 テーブルB 6 D 12 E 20 テーブルA Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?
- ベストアンサー
- Oracle
- PL/SQLのCREATE文でCHAR型で項目ができない
PL/SQLで以下のようにCREATE文を発行しました。 Bテーブルの項目 項目1,'1'を持つテーブルを作成したいのです。 DECLARE KBN CHAR(1); WK_SQL VARCHAR2(4000); BEGIN KBN := '1'; WK_SQL := 'CREATE TABLE A_TBL AS SELECT B.項目1 , ' || KBN || ' AS A項目 FROM B_TBL B ' ; EXECUTE IMMEDIATE WK_SQL; END; 結果はA_TBLの項目、A項目がどうしてもNUMBER型になるのです。初心者で、質問に不備なところもあるかもしれませんが、どうすればよいか、ご教授ください。
- ベストアンサー
- Oracle
- シンプルなSQLの書き方がわかりません。
以下のSQLをシンプルに一つにしたいのですが、どのように書いたらよろしいでしょうか? どうぞご返答頂けますようお願い申し上げます。 --test1_tblの抽出 select a1 as a1, b1 as b1 from a_tbl where c=1 --test2_tblの抽出 select a1 as a1, e1 as e1 from b_tbl where rowid in (select min(rowid) from ee group by a1) and a1 is not null and a1 !=' ' order by a1 --test1_tblとtest2tblの結合 select t0.a1 as a1, t0.b1 as b1, t1.e1 as e1 FROM test1_tbl t0, test2_tbl t1 WHERE (t0.a1 = t1.a1)
- ベストアンサー
- Oracle
- SQL文
SQLの初心者です。 Aテーブル(a項目,b項目,c項目)とBテーブル(a項目,d項目,e項目)のテーブルがあります。 d項目順でAテーブルの項目のみ出力するにはどうしたらいいのでしょうか。 例えば次のSQL文ではd項目順で出力されますが結合の為、AテーブルとBテーブルの全項目が出力されます。 SELECT * FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 次のSQL文のようにAテーブルの項目を選択したらAテーブルの項目のみ出力する事はわかります。 SELECT a項目,b項目,c項目 FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 今回はAテーブルの項目数が少ないのでこれでもいいのですが、項目数が多くなると大変です。 上の様に項目を選択しないでAテーブルの項目を全て出力する事は可能なのでしょうか。 宜しくお願い致します。
- ベストアンサー
- Oracle
- ストアドのselect文で別テーブルのカウントを取得するには
こんばんは。 以下のようなことをするのにどう記述していいのか わかりません。 入力パラメータ test1,test2に一致するテーブル1のレコードの 項目1と項目2の値と test1,test2に一致するテーブル2のレコードの カウントを 返したいと考えていますがどう記述したら テーブル2のカウントを返せるのかわかりません。 以下、考え中の内容を記述したものです。 テーブルTBL_AとテーブルTBL_Bがある。 TBL_Aの項目はFLD_1,FLD_2,FLD_3 TBL_Bの項目はFLD_1,FLD_2,FLD_3,FLD_4 TBL_AとTBL_Bには同一のフィールドFLD_1,FLD_2があり、 select FLD_1,FLD_2,FLD_3 FROM TBL_A WHERE FLD_1 = test1 AND FLD_2 = test2(select文1) 上記のSQLでTBL_AのFLD_1,FLD_2を取得する ここに、 select count(*) FROM TBL_B WHERE FLD_1 = test1 AND FLD_2 = test2(select文2) このselect文2で取得した値を select文1に接続して値を戻したいのですが やり方がわかりません。 戻したい値はTBL_AのFLD_1,FLD_2,FLD_3とTBL_Bのカウントです。 お分かりになる方教えてください。よろしくお願いします。 なおoracleは9iを使っています。
- ベストアンサー
- Oracle
- 【至急】SQLの結合について教えてください(2)
select * from A select ef from B where ef = '3' かつ、A.ab = B.ab and A.cd = B.cd 至急質問させてください。 上記SQLを結合したいです。 取得したいデータはAのテーブルの全項目で、 取得条件として、Aのテーブルのキー項目 = Bのテーブルのキー項目に、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。
- ベストアンサー
- SQL Server
- 片方だけ抽出する方法(SQL)
下記のようなテーブルがあるとします。 Aテーブル コード 値 X 10 Y 20 Z 30 Bテーブル コード 値 Y 20 Y 30 Z 30 A.コード=B.コードとA.値=B.値という条件に一致しないデータのうち、 Aテーブルのデータのみ取り出したいです。 この場合だと、「X 10」のみ結果として欲しいです。 どのようなSQLを作成すればいいか、分かりません。 考え方の問題なのかもしれませんが、ぜひ教えてください。
- ベストアンサー
- Oracle
お礼
ありがとうございます。 これなら、大変すっきりしています。 お陰さまで問題が解決いたしました。