0649NAME IS NULL2018/12/03(月) 20:36:59.12ID:???>>648 str1の長さがstr2より短いことがわかってるなら where left(str2, len(str1)) = str1 でいいかと 0650NAME IS NULL2018/12/03(月) 22:05:33.10ID:??? ためしてないけど、 where (str1 like str2+'%') or (str2 like str1 + '%')とかでどうだろう 0651NAME IS NULL2018/12/03(月) 22:51:42.17ID:???>>648 んじゃ他ので WHERE PATINDEX(str1 + '%', str2) = 1 0652NAME IS NULL2018/12/04(火) 10:41:43.68ID:???>>649>>650>>651 お三方、ありがとうございました。 ばたばたしてて遅くなりましたが、確認できました。 0653NAME IS NULL2018/12/04(火) 11:20:56.24ID:???>>650-651 str1とかstr2に'%'含んでても大丈夫だっけ? 0654NAME IS NULL2018/12/04(火) 11:59:27.62ID:KJK6oDpE 大丈夫。ただ+が使えるのはMS系だな。 後は使えるやり方に読み換えて 0655NAME IS NULL2018/12/09(日) 16:50:28.29ID:??? SQL SERVERのSQL文について質問です
postgresql9です。 0663NAME IS NULL2018/12/17(月) 19:37:22.24ID:???>>662 postgresql9手元で動かせません。MariaDBです テーブル名はproductと仮定しました
select * from product where (major_ver,minor_ver) in ( select major_ver,max(minor_ver) from ( select major_ver,minor_ver from product where major_ver = (select max(major_ver) from product ) ) as t ); 0664NAME IS NULL2018/12/18(火) 00:22:00.75ID:???>>663 なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか ありがとうございます。 0665NAME IS NULL2018/12/18(火) 01:53:40.53ID:??? window関数使うともっと綺麗に書ける気がする
俺はwindow関数苦手だから書けないが 0666NAME IS NULL2018/12/18(火) 23:18:20.88ID:d1jtTCeB>>661 あんたはDATE型が文字列だとでも思っているのか? 0667NAME IS NULL2018/12/27(木) 14:42:38.04ID:??? a. 顧客テーブル(顧客コード, 顧客名) b. 商品テーブル(商品コード, 商品名) c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数) ↓ 売上日, 顧客名, 商品名, 売上数
このように結果が表示されるSQL文を教えてください 0668NAME IS NULL2018/12/27(木) 15:25:29.94ID:??? 何か基本のキって感じ これが書けないとヤバいと思う 0669NAME IS NULL2018/12/27(木) 15:29:31.60ID:??? こういうのって内部と外部とどっちで繋ぐのがよろしいの? それとも、JOINではなくWHERE内でキーを繋いであげればいいの?? 0670NAME IS NULL2018/12/27(木) 19:19:36.61ID:??? joinを使いなされ 0671NAME IS NULL2018/12/27(木) 19:28:59.29ID:??? まだ書かれていない要求仕様があるんじゃない? 読み取れる範囲だとどっちでも良いように思う 0672NAME IS NULL2018/12/28(金) 01:38:09.32ID:???>>667 select 売上日, 顧客名, 商品名, 売上数 from 売上テーブル inner join 顧客テーブル on 顧客テーブル.顧客コード=売上テーブル.顧客コード inner join 商品テーブル on 商品テーブル.商品コード=売上テーブル.商品コード
>>669 FROMに複数テーブル書いてwhereに結合条件書くのは今は推奨されない 内部か外部かは、商品テーブルにない商品売ってたり顧客テーブルにない顧客に売ってたりしない限りどちらでも同じ結果 どっちでもいいなら普通は内部結合にするんじゃね 0673NAME IS NULL2018/12/28(金) 08:19:26.48ID:???>>672 ありがとうございます メモしておきます 0674NAME IS NULL2018/12/28(金) 16:26:23.93ID:??? 外部キーがあればinnerなければleft joinかな 0675NAME IS NULL2018/12/28(金) 22:03:16.91ID:??? このなかで一番美人なのって真ん中だよね?深キョンレベルだと思うのだが ちなみに向かって右は目も鼻も整形してるって本人が公言してるけどそれ抜きにして誰が一番美人だと思う? http://bigsta.net/media/1933567086757747003_35649070980676NAME IS NULL2018/12/28(金) 23:11:45.98ID:???>>675 ブラクラ 0677NAME IS NULL2018/12/29(土) 10:58:20.71ID:???>>672 そうなのか、勉強になったわー。 講習受けたときはJOINで教わったのに、実際にWHEREで書かれたの使ってる人たちがいて何でだろうと不思議だったんだけど、 歴史的な表記ぶれみたいなもんなんだな。 商品登録がない商品を売ってる可能性とかも全然思いつかなかった。 0678NAME IS NULL2018/12/29(土) 11:00:50.31ID:???>>674 外部キー無いけど繋ぐって、どんなシチュエーション?? 0679NAME IS NULL2018/12/29(土) 19:17:07.38ID:/5Z8+3Hw>>677 結合条件をFROM句にしたのは標準SQL。ただ構文が長ったらしいのは失敗だった。 0680NAME IS NULL2018/12/29(土) 19:20:03.23ID:/5Z8+3Hw>>672 推奨されない?
そんな嘘を書くな。
製品によって結合条件の構文の一部が非推奨になっただけ。 0681NAME IS NULL2018/12/29(土) 19:21:06.30ID:/5Z8+3Hw>>677 上の世代からするとなんでFROM句に書きたがるのか疑問なんだよ。 0682NAME IS NULL2018/12/30(日) 09:09:04.13ID:??? どのテーブルにも脳死したかのように createdとupdatedっていうtimestampなカラムがあるんですが普通なんですか?
SELECT "TableA".*,"TableB"."ID2","TableB"."DATA" FROM "TableA" LEFT JOIN ( SELECT "ID",MAX("KEY") AS "KEY" FROM "TableB" WHERE "KEY"<=2 GROUP BY "ID" ) AS a ON "a"."ID"="TableA"."ID" LEFT JOIN "TableB" ON "TableB"."ID"="a"."ID" AND "TableB"."KEY"="a"."KEY" ORDER BY "TableA"."ID" 0712NAME IS NULL2019/01/19(土) 23:44:19.87ID:???>>711
MAX(KEY)とWHEREが巧妙ですね 0713NAME IS NULL2019/01/19(土) 23:58:53.77ID:???>>711 検証してみたんですが、 TableBに(8,2,3,'b_key3')を追加し、検索KEY=3にした時、 一番若いKEY=1を持って来れてません 0714NAME IS NULL2019/01/20(日) 02:34:11.35ID:??? ? 2より若いじゃ無くて2が無ければ一番若いKEYなのかな KEY=3,4,5の場合3になる? 0715NAME IS NULL2019/01/20(日) 02:37:14.35ID:??? なんかSQL貼り付けようとすると書き込みに失敗する 何故だ 0716NAME IS NULL2019/01/20(日) 03:14:45.59ID:??? 連投スマン 何度か試したけど直接SQL書くとエラーになるっぽい https://ideone.com/UrWptx0717NAME IS NULL2019/01/20(日) 08:31:23.78ID:???>>33みたいに場合分けを含むようなのは素直にunion allでやる方が見通しが良かったりする。 記述は冗長かもだけど。 0718NAME IS NULL2019/01/23(水) 06:30:51.69ID:???>>715 SQLインジェクションって知ってる? 0719NAME IS NULL2019/01/23(水) 08:44:06.11ID:???>>718 最初、>>716の16行目以降のSELECT文を書き込もうとしたら失敗したのよ >>711だと書き込み成功してるのに何故だろうか? どの部分が問題になっているか知ってる? 0720NAME IS NULL2019/01/24(木) 23:55:34.12ID:??? チェックは途中のクラウドで行っているようです SQLの特定のキーワードに反応しているみたい 引っかかるときもあれば引っかからないときもある その辺の基準はよく分からないです チェックする検査項目が変わるのかもしれない 0721NAME IS NULL2019/01/25(金) 19:17:24.19ID:???>>720 ありがとう
書いてみてエラーになったら外部サイトに貼るしかないか 0722NAME IS NULL2019/01/25(金) 20:20:44.91ID:??? 手間だけど、それが一番良いと思う 後は全角文字に置換して貼り付けるくらい 汚くはなるけど、説明と合わせて書きたい時は こうすると良いかな 0723NAME IS NULL2019/01/30(水) 21:50:00.13ID:faG5je+8 初めて質問させていただきます SQLからPostgresへのデータ移行をC#使ってプログラム作ってます csv吐き出しで移行させたいんですが、ダブル型のカラムのデータが.000や10.600という形で入ってるのですがどうにか0にする・余計な0を無くすことが出来るのでしょうか? またそういう事が吐き出しの際指定出来るのでしょうか? 吐き出しはbcpでフォーマットを読ませてます 0724NAME IS NULL2019/01/30(水) 22:08:09.72ID:??? FORMAT()関数とか言うのがあるんじゃねぇの?よく知らんけど 0725NAME IS NULL2019/01/31(木) 14:53:40.26ID:kxiPGIi/>>723 SQL ServerのことをSQL
CSVファイルのデータをわざわざC#でインポートプログラムを作ってインポート
エクスポートや出力にあたる言葉が「吐き出し」
初心者なのかクソ経験者なのか? 0726NAME IS NULL2019/01/31(木) 20:03:35.35ID:???>>725 自己解決しました 申し訳ない急ぎだったのでそういう書き方になってしまった C#は移行という一貫性のあるプログラムです SQL serverからPostgresへの移行と書いてあるように 目的の為の柔軟性もあるという意味合いで情報を付加しただけに過ぎないです 0727NAME IS NULL2019/01/31(木) 21:14:34.97ID:kxiPGIi/ 文字でデータを移行するのに数値型のデータをどう表現するのか指定を行っていない時点で初心者。 0728NAME IS NULL2019/01/31(木) 21:18:44.70ID:???>>726 どういう風に解決したのか書いておいて 0729NAME IS NULL2019/02/01(金) 06:34:24.99ID:???>>727 吐き出しはbcpでフォーマットを読ませてます >>728 問題は別にありました 思いっきりbcp時にNULL文字の空白が…と警告が書いてあるのにも関わらずNULLIFでRTRIM関数を使用していないことが原因でした ちなみに.000は0には出来ませんでしたがコンバートで代用しました 0730NAME IS NULL2019/02/01(金) 09:44:22.12ID:??? 根本的にアプローチ方法が違う様な気がする 山に登るのも好き好きだから 逆立ちして登りたい人もいるだろうし 0731NAME IS NULL2019/02/01(金) 10:08:47.52ID:???>>729 こういう事かな https://www.ilovex.co.jp/Division/SRD/archives/2008/01/sqlserverbcpnul.html0732NAME IS NULL2019/02/01(金) 11:48:19.88ID:??? SQLパズルって本どうなの?実務で役に立つ? 0733NAME IS NULL2019/02/01(金) 13:04:50.72ID:???>>731 正にその通りでございます。 0734NAME IS NULL2019/02/01(金) 13:43:15.56ID:LPFd6PpO 今度はbcpの使い方を知らなかったということか。何もかもダメだな。 0735NAME IS NULL2019/02/01(金) 14:28:44.76ID:??? bcpの使い方ってよりbcpの相互関係に気付けなかっただけだろ 0736NAME IS NULL2019/02/01(金) 22:32:32.28ID:???>>659 マジかよ 0737NAME IS NULL2019/02/10(日) 12:16:31.44ID:??? auto incrementって指定しなくても勝手に連番いれてくれないの? 0738NAME IS NULL2019/02/10(日) 12:45:17.83ID:??? 多義的質問で回答が難しい 0739NAME IS NULL2019/02/10(日) 12:47:26.67ID:??? autoincrementのカラムを何も指定しないでinsertしても入らないのですか? 0740NAME IS NULL2019/02/10(日) 13:20:09.88ID:??? それは無理だろう 作成時に指定した制約の範囲で値は入る 0741NAME IS NULL2019/02/10(日) 13:42:14.39ID:??? じゃあ空のテーブルに1から連番のidを入れたいときどうしますか? 0742NAME IS NULL2019/02/10(日) 14:00:53.96ID:??? 取得時に連番を振れば良いので、そもそもの要求が正しくないと考えるべきだな 0743NAME IS NULL2019/02/10(日) 14:19:10.05ID:???>>737 RDBMSによって挙動が違うのでは 0744NAME IS NULL2019/02/10(日) 15:01:33.42ID:???>>742 取得時?自分で連番を入れろってこと? >>743 postgresqlです 0745NAME IS NULL2019/02/10(日) 15:05:49.46ID:??? データベースってどういう仕組みなの?一つのテーブルにファイルどれくらい使ってるの? 0746NAME IS NULL2019/02/10(日) 16:06:02.48ID:???>>744 これは読んだ? http://www.postgresqltutorial.com/postgresql-serial/0747NAME IS NULL2019/02/10(日) 17:54:40.38ID:RVblbfO4>>741 必ず連番でないといけないか、まずはそこを考えた方がいい。 0748NAME IS NULL2019/02/10(日) 18:22:16.70ID:6fMC7oP8>>744 同時実行時にどうやって連番が振れるのか考えた方がいい。