タグ

sqlに関するkurikurimaronのブックマーク (20)

  • 【SQL Server】住所から都道府県を抜き出すSQLスクリプト|アズビーパートナーズ

    客先や業者からデータ一覧をもらった際、住所が1つのフィールドに格納されている場合があります。 来は都道府県・市区町村・番地以降のように住所は3つ以上の項目に分かれていた方が何かと便利です。 そこで、住所が1つのフィールドに入っている場合に、都道府県名のみを取り出すSQL文を作成します。 2通りのSQL文がありますので条件に合う方でどうぞ。 住所の左から4文字または3文字取り出す 必ず住所に都道府県が入っていることが明確な場合は以下の数式で取り出せます。 ※47都道府県のうち、「都道府県」の文字を含めて4文字になるのは「神奈川県」「和歌山県」「鹿児島県」の3つだけです。 都道府県名が4文字なのは、4文字目が「県」である場合しかありませんので、4文字目が「県」なら先頭から4文字を取得。そうでない場合は3文字を取得すれば都道府県名が取り出せます。 住所の中から「道府県」の文字が出現するまでの長

    【SQL Server】住所から都道府県を抜き出すSQLスクリプト|アズビーパートナーズ
  • 新著が出ます:『達人に学ぶ SQL徹底指南書 第2版』 - ミックのブログ

    日、新著が発売となります。書の初版は処女作ということもあり、色々と書き手として未熟な部分も多く出てしまったなのですが、幸運にも長い期間読んでいただいたことでこのたび改訂版の刊行にこぎつけることが出来ました。 さすがに10年経過すると内容も古くなっており、多くのコードをリバイスしています。特に初版刊行時にはまだサポートが不十分だったウィンドウ関数が、現在では主要なDBMSではほぼ利用できるようになったことを受けて、全面的にこれを採用しました。これにより性能と表現力を両立させるモダンなSQLコーディングが可能になったので、ぜひ書でその素晴らしさを確認いていただければと思います。 以下に書の前書きを引用しますので、購入の際の参考にしてください。 書の初版が刊行されてから、10年が経過しました。筆者にとって、初版は初めて書いた、いわゆる処女作であり、自分の知見や文章がどのような受け取

    新著が出ます:『達人に学ぶ SQL徹底指南書 第2版』 - ミックのブログ
  • カンマ区切りの文字列からテーブルを生成する - SQL Server 入門

    カンマ区切りの文字列からテーブルを生成するには? プログラムからデータベースに複数のID等を一度に渡したい時ありますよね。 ユーザー定義のテーブルを作って一度に渡すこともできますが、今回はプログラム側で ID をカンマ区切りの文字列にしてデータベースに渡し、そのカンマ区切りの文字列をスプリットして、以下のように ID を行として持つテーブルを生成したいとします。 カンマ区切りの文字列からテーブルを生成する方法な何通りかありますが、今回は比較的パフォーマンスの良い単純な WHILE ループを使った方法と、スクリプトが短い XML を使った方法を見てみましょう。 WHILE ループを使ってカンマ区切りの文字列からテーブルを生成する WHILE ループを使って、カンマ区切りの文字列からテーブルを生成するユーザー定義ファンクションは以下の通りです。 CREATE FUNCTION dbo.ufnS

    カンマ区切りの文字列からテーブルを生成する - SQL Server 入門
  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • eoblogサービス終了のお知らせ

    eoblogは 2017年3月31日(金)15:00 をもってサービスを終了いたしました。 長年にわたりご愛顧いただき誠にありがとうございました。

  • [SQL Server] LIKEを利用して検索する時パフォーマンスに注意事項 - ブログ - INNOYA.COM

  • SQL Server Management Studio でテーブルのデザインを変更できるようにする - ぐるぐる~

    いつも忘れるのでメモ。 SQL Server 2008 の SQL Server Management Studio では、テーブルのデザインを変更しようとしても、 変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。 なんてエラーが出て出来ない場合がある。 これを回避するためには、 メニューから「ツール」を選ぶ 「オプション」を選ぶ 左側のツリーから「デザイナ」を選ぶ 右側の「テーブル オプション」から「テーブルの再作成を必要とする変更を保存できないようにする」のチェックを外す とすれば、出来るようになる。

    SQL Server Management Studio でテーブルのデザインを変更できるようにする - ぐるぐる~
  • SQLServerでの文字列の半角文字から全角文字への変換 - babydaemons’ blog

    データの全角半角変換、、 - QA@ITでじゃんぬねっとさんが言及している関数を実装してみました。 #この掲示板の議論で、じゃんぬねっとさんはtypoしてますねw #やはり、人間はtypoから逃れられないのかw ※超重要:私もtypoしてました。コメントでご指摘いただきました。ありがとうございます。m(_ _)m レビューせずにコピペしてこのソースを流用した方は、修正をお願いします。m(_ _)m CREATE FUNCTION dbo.ToWide(@s VARCHAR(512)) RETURNS VARCHAR(512) AS BEGIN /* ASCII文字はコード順に処理する */ SET @s = REPLACE(@s COLLATE Japanese_BIN, ' ', ' ') SET @s = REPLACE(@s COLLATE Japanese_BIN, '!', '!

    SQLServerでの文字列の半角文字から全角文字への変換 - babydaemons’ blog
  • SQL Serverのバージョンを確認する方法 - matu_tak’s blog

    過去の記事ですが、改めて。 http://d.hatena.ne.jp/matu_tak/20091010/1255167789 SQL Server のバージョン番号は「SELECT @@VERSION」で確認することができます。SQL Server 2008 SP1 CU7 までのバージョン番号(ビルド番号)をまとめました。 リリース、Service Pack バージョン番号 SQL Server 2008 R2 SQL Server 2008 R2 CTP2 10.50.1092 SQL Server 2008 R2 CTP3 10.50.1352 SQL Server 2008 R2 RTM 10.50.1600 SQL Server 2008 R2 RTM CU1 10.50.1702 SQL Server 2008 R2 RTM CU2 10.50.1720 SQL Serve

    SQL Serverのバージョンを確認する方法 - matu_tak’s blog
  • SQL-Server2005 スクリプトの作成 - 使えないプログラマー

    イントラネットとは (イントラネットとは) HDD 修理 (HDD 修理) [SQLServer]CSVファイルをBULK INSERTで取り込む (babydaemonsの日記) [VB6]Collectionクラスのキーは文字列オンリー (babydaemonsの日記) COALESCEを何も見ずに書けたー (Do I like programming?) .NETアプリケーションの設定ファイル (babydaemonsの日記) [コンピューター]使えないプログラマー: FizzBuzz問題 (unibonの日記) オーストリア マウンテン カフェイン ウォーター (殿のBlog) FizzBuzz問題 (LibertyBoy) ハードディスクメンテナンス (ビリーパソコンハードディスク交換)

    SQL-Server2005 スクリプトの作成 - 使えないプログラマー
  • SQLServer2008と2005の互換性

    年に数カ月のプログラマを、現在やっています。 久々のプログラムですが、やはり最新情報は常に必須と痛感。 余計な時間が全体の1/3程と無駄が多すぎます。 SQLSERVER2008と2005の互換性について。 2008は下位互換があるので問題ありませんが、2005へ環境移動出来ません。 私は通常バックアップ⇔リストアを使います。デタッチが好きでないのでアタッチ・デタッチは使いません。 今回の客先は100%SQL SERVER2005を使っています。リモテでManagementStudio2005を使い既存システムをメンテ。 新システムもSQLsv2005。開発は事務所でSQLsv2008と2005両刀で構築。客先テスト環境へ事務所環境を移動してテスト。しかしどうも環境が上手く移動出来ず、また余計な時間がかかりました。 するとこんなところに小さく互換性がないと書いてあります。もっと大きな字で書

  • datetime (Transact-SQL) - SQL Server

    適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) 24 時間形式の時刻 (1 秒未満の秒を含む) と組み合わせた日付を定義します。 新しい作業には datetime を使用しないでください。 代わりに、 time、 date、 datetime2、および datetimeoffset データ型を使用します。 これらの型は SQL Standard と一致し、移植性が高くなります。 time、datetime2、datetimeoffset は秒の有効桁数が増えています。 datetimeoffset グローバルに配置されるアプリケーション向けにタイム ゾーンのサポートを提供します。 説明 プロパティ 値

    datetime (Transact-SQL) - SQL Server
  • SQL Server:日付を求める式のサンプル(月末、月の1日、締め)及びユーザー定義関数

    SQL Serverで月末日や月初(1日)の日付を求める式、20日締めなどの締め日を基準とした集計期間の集計を求めるユーザー定義関数とそのサンプルSQLを覚書 データベースのデータを基に月初(1日)から月末までのデータを集計することはよくあること。 また、集計期間は必ずしも月初~月末とは限らず、20日締め(先月21日~今月20日まで)のデータの集計も求められる。 締め期間の集計はつどCase文を使ったのでは長くて面倒なのでユーザー定義関数を作成しておく。 忘れないように覚書。 月初や末日の日付を求めるサンプルSQL 月初や末日などの日付を求めるサンプルSQLを以下に記載する。 何れもSQL Serverの日付関連の関数を使ったSQL文。 先月末日 先月の月末日を求めるSQLの例。 select cast((cast(year(getdate()) as varchar(4))+'-'+ca

    SQL Server:日付を求める式のサンプル(月末、月の1日、締め)及びユーザー定義関数
  • SQL Server 2005 にて、照合順序設定:Japanese_CI_AS時での、濁点を含んだ時のOrder Byの仕様を教えて下さい。

    こんにちわ。 大川 聡 と申します。 SQL Server 2005 にて、照合順序設定:Japanese_CI_AS時での、 濁点を含んだ時のOrder Byの仕様を教えて下さい。 ババ ノリミツ、ハバ ノリミツ、ハハ ノリミツ ババ マコト、 ハバ マコト、 ハハ マコト ババ マサヒコ、ハバ マサヒコ、ハハ マサヒコ を、Order Byでソート(昇順)すると、 ハハ ノリミツ ハバ ノリミツ ババ ノリミツ ハハ マコト ハバ マコト ババ マコト ハハ マサヒコ ハバ マサヒコ ババ マサヒコ となりました。 直感的には、下記のようになると思っていました。 ハハ ノリミツ ハハ マコト ハハ マサヒコ ハバ ノリミツ ハバ マコト ハバ マサヒコ ババ ノリミツ ババ マコト ババ マサヒコ Japanese_CI_ASの場合、濁点は並び順にどのように反映されるのでしょうか? よ

  • バックアップと復元によるデータベースのコピー

    適用対象: SQL Server SQL Server では、SQL Server 2005 (9.x) 以降のバージョンを使用して作成したユーザー データベースのバックアップを復元して、新しいデータベースを作成できます。 ただし、以前のバージョンの SQL Server を使用して作成された master、model、および msdb のバックアップを SQL Server で復元することはできません。 また、SQL Server のバックアップを以前のバージョンの で復元することもできません。 重要 SQL Server 2016 では、以前のバージョンとは異なる既定パスが使用されます。 そのため、以前のバージョンの既定の場所で作成されたデータベースのバックアップを復元するには、MOVE オプションを使用する必要があります。 新しい既定パスの詳細については、「 SQL Server の

    バックアップと復元によるデータベースのコピー
  • T-SQLの0除算対応:へっぽこ実験Blog:So-net blog

    NULLIF使って、0ならNULLにする。DECLARE @intNum intSET @intNum = 2 SELECT 10 / @intNum     -- 5 SELECT 10 / NULLIF( @intNum, 0 ) -- 5SET @intNum = 0 SELECT 10 / @intNum     -- エラー SELECT 10 / NULLIF( @intNum, 0 ) -- NULLになるいままで、CASEで分岐してたけど、こっちの方が楽。後輩のコードレビューしていて教えてもらった…あたまいいなぁ。

  • SQL Serverで、文字列を抜きだす - 雑多な日々

    SQLサーバーで、文字列を指定Byte数で抜き出す ---- print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 1)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 2)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 3)) + ']' print '[' + convert(varchar, substring(convert(text, 'ほげhogeほげ'), 1, 4)) + ']' print '[' + convert(varchar, substring(convert(text,

    SQL Serverで、文字列を抜きだす - 雑多な日々
  • なっちゃんのプログラマーズ日記: SQLServerで文字列フィールドから指定バイト数取得する方法

    仕事で上記の要件が必要となり、SQL関連のリファレンスを調べたら何とSQLServerでは文字数を数える関数はあるがバイト数を数える関数が存在しないことを知った。OracleやAccess(Jet)にはあるのにSQLServerには無いんだと!仕方なくよく参考にするサイトを調べてみたが過去ログにもそのような関連記事は見つからなかった。みんな使わないのかなぁ・・・と思いつつ、例によってGoogleで調べてようやく見つかった。何とも見事に、スマートな方法で実現していたのでここに覚書という意味で(仕事中ではあるが(^^;)書いておく。 注:文字列フィールドを 「moji」=VARCHAR(30)とする。 1.バイト数を取得 DATALENGTH(CONVERT(VARCHAR(30), moji)) 2.左から2バイト取得(LEFT()関数もどき) CONVERT(VARCHAR(2), mo

    なっちゃんのプログラマーズ日記: SQLServerで文字列フィールドから指定バイト数取得する方法
  • トリガーの設定方法 - OKWAVE

    トリガを利用すると、そのトリガがかかったテーブルに対する「クエリの結果」を知ることはできますが、「クエリの内容」まで知ることはできません。 例えば「クエリの結果」がテーブルの最初の1行になるようなクエリを考えてください。そのような結果を得られるクエリは何通りも考えられるわけですが、そのうちどのクエリを実行してトリガが実行されたのかを判別することはできません。 ですので、トリガを使用して、全く同じクエリを他のテーブルに対して実行することはできません。 しかし「クエリの結果」は分かりますので、例えば「主キーを共有しており一方への追加・削除は他方へも反映したい」というような場合には、クエリの結果を使用して他のテーブルに対して処理を行うことはできます。(クエリの結果は、トリガ内だけで使用できるinsertedとdeletedという特殊なテーブルを使用します。)

    トリガーの設定方法 - OKWAVE
  • SQLインジェクションを考える 第1回:SQLインジェクションとは何か

    3月以来、世界中の多くのインターネットサイトが、悪意のユーザーによるSQLインジェクション攻撃に遭い、被害を出していることが報じられている。SQLインジェクションとは何か、またなぜこのように流行し被害が広がったのか、被害を防ぐにはどうすればいいのか、3回にわたり考えてみたい。 ● SQLインジェクションとは何か SQLインジェクションによる攻撃では、不正なスクリプトをWebサイトに埋め込むことで閲覧したユーザーのPCにウイルスを感染させたり、あるいはサーバーから不正に情報を盗み取られるというような被害が発生している。 通販サイトなどでは、攻撃により利用者のクレジットカード情報が盗み取られたことが発覚し、個人情報が漏洩したお詫びとして、ユーザーに対して金券や現金を配布することになったサイトもあるなど、その被害は金銭的にも大きくなっているようだ。 SQLインジェクションとは簡単に言うと、Web

  • 1