SQLServer2000について質問です。

すべてのテーブルのカラムの中に特定の文字が入っているかをチェックするSQLを書きたいと思います。ユーザーテーブルだけをチェックしたいのです。
テーブルの数は10個ほどですので、テーブル単位ですべてのカラムの中の文字をチェックするSQLでも大丈夫です。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/21 10:25:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:ken3memo
    一時的なチェック処理なら(今回だけ・半年に一回ぐらいなら)
    テーブルを.txtや.csvなどにselect * で落として、
    テキストファイルから文字列を検索するツールやプログラムを作ってチェックするとか?

    フィールド名を書けるなら(たぶん面倒で書きたくない質問だと思いますが)
    http://oshiete.goo.ne.jp/qa/2298638.html
    みたいに
    select a1,a2,a3, [a1]+[a2]+[a3] as chkdata
    from Table_A
    where chkdata like '%チェック文字列%'
    とかだけど、
    select * from ~ は フィールド全てだけど、
    この*(全てのフィールドオーダー)を展開して全て+する感じのSQL(そんなのあるのか?)
    が質問の本当の答えなんだろうなぁ...と思いつつ、コメントで失礼します。
    (※SQLの魔術師がサクっと1行で回答してくれるのを私も楽しみにしています...)
  • id:salvatore
    oracleでいうところのディクショナリーのようなテーブルがあると思うのです。
    そのテーブルが特定できればとは思っているのですが。
  • id:cx20
    以下、参考情報です。

    > oracleでいうところのディクショナリーのようなテーブル

    Oracle は、よく知らないですが、以下のビューのことでしょうか?
    ------------------------------------------
    <SQL92 標準形式>
    /* テーブル名一覧 */
    SELECT * FROM INFORMATION_SCHEMA.TABLES

    /* テーブル名 + 列名一覧 */
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    ------------------------------------------
    <SQL Server システムテーブル>
    /* テーブル名一覧 */
    SELECT name FROM sysobjects WHERE xtype = 'U'

    /* テーブル名 + 列名一覧 */
    SELECT
      o.name AS TABLE_NAME,
      c.colid AS COLUMN_NO,
      c.name AS COLUMN_NAME
    FROM
      sysobjects o
    JOIN syscolumns c ON o.id = c.id
    ORDER BY
      o.name,
      c.colid
    ------------------------------------------

    検索の方法ですが、
    SQL Server の標準機能でということであれば、
    ken3memo さんのような方法になるのかもしれません。

    あとは、使ったことが無い機能なので、恐縮ですが、
    別の方法として、SQL Server のフルテキスト検索エンジンが使えるかも知れません。
    前準備として、カタログ作成、インデックス作成等が必要なようなので、少し手間かも?ですが。。。

    ■ [T-SQL] フルテキスト検索を行う - Netplanetes
    http://handcraft.blogsite.org/Memo/Article/Archives/131
    ■ CONTAINSTABLE (Transact-SQL)
    http://msdn.microsoft.com/ja-jp/library/ms189760(v=sql.80).aspx
    ■ 日本語用の SQL Server フルテキスト検索エンジンを使用する場合の考慮事項
    http://support.microsoft.com/kb/2252955/ja

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません