![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (3件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?e8efa67)
No.3
- 回答日時:
SQL Server 2000の場合以下のSQLで要求を満たします。
if (select COLUMNPROPERTY( OBJECT_ID('TABLE_A'),'COLUMN_A','PRECISION')) > 0
print('テーブルTABLE_AのカラムCOLUMN_Aが既に存在します。')
else
alter table TABLE_A add COLUMN_A int;
go
補足)
COLUMNPROPERTYの三番目のパラメータ'PRECISION'は指定した列のデータ型の有効桁数を返します。無効な入力の場合NULLを返すますので、カラムがない場合はNULLになります。
そして、NULLと数字0の比較で常にFalseになることを利用しました。
COLUMNPROPERTYの詳細はSQLOnLineHelpを参考にしてください。
参考URL:http://d.hatena.ne.jp/nagakura_eil/20070913/1189 …
No.2
- 回答日時:
SQL Server 2000ですか?2005ですか?
バージョンを明記するように、お願いします。
SQL Server 2005なら、情報スキーマが実装されています。
それより前なら、カタログを直接参照する方法になります。
if not exists(
select o.name,c.name
from syscolumns c, sysobjects o
where c.id=o.id
and o.type='U'
and o.name='tbl1' and c.name='c4'
)
alter table tbl1 add c4 varchar(10);
go
No.1
- 回答日時:
SQLではなく ADOのプログラムとしてならできます。
Columnの個数は Column.count でわかります。
個数だけで特定できるならこれでよいはずです。
さらに該当するカラム名がるかどうかは
Columnの個数の回数分、ループさせて Columnの名前を取得すれば
わかります。
【参考】
●MDBのテーブル定義内容を取得する。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
____________________________________________________________
どうしても SQLというなら テクニックを使わないとできないと思います。
テーブルのフィールド名をいったん変数やTEXTファイルに取り込まないと無理です。 つまり SQLだけでというのはできないように思えます。
Access などの場合でしたら 関数を作ればできます。
SQL SERVVER 2005 も同様にCLR(ユーザー定義)の関数を作れば可能です。(※ VB.NET 2005 が必要です)
関数の中身は指定されたフィールド名が存在する場合は 1 そうでない場合は 0 を返すようにすればよろしいかと
Access の場合はマクロの中で条件分岐させればできます。
もしくはVBAで可能です。
SQL SERVVER 2005 はストアドの処理中で関数にて条件分岐すれば大丈夫です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle データベースのカラムの型がCHAR型の場合で 値にシングルコーテーションつけなくても動作する場合と数 3 2022/04/25 12:00
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- Oracle SQLの書き方について 1 2023/04/13 09:54
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
テーブルに存在しない列をselect文で出力する事はできないでしょうか?
PostgreSQL
-
列が存在しないと言われる
PostgreSQL
-
-
4
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
5
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
6
Accessデータベースの最適化をExcelVBAでやりたい
その他(データベース)
-
7
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
8
T-SQLで任意の箇所で強制終了する方法
SQL Server
-
9
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
10
Access サブフォームでの選択行の取得
その他(データベース)
-
11
SQLサーバから、項目の属性(型)を取得したいのですが・・・
SQL Server
-
12
アクセスのフォームのビューが表示されないのですが、
その他(データベース)
-
13
SQLServerでNULLを挿入したいです
SQL Server
-
14
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
15
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
16
オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
SQL Server
-
17
DBから取得した値を配列へ代入する
Visual Basic(VBA)
-
18
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
19
「RunSQL」と「Execute」の違い
Access(アクセス)
-
20
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 1クエリでの複数ALTER文
-
カラムの存在チェック
-
カラム情報とはなんですか?
-
GROUP BY で列名は指定できない...
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
postgreSQLのint型は桁数指定が...
-
ORA-00959: 表領域'****'は...
-
SQLでスキーマ名(所有者名)の...
-
異なるスキーマからデータを抽...
-
Oracle複数の表をもとにmerge文...
-
ACCESS 複数テーブル・複数フィ...
-
同じSELECT文同士でのデ...
-
エクセルからアクセスにインポ...
-
テーブル名を[]でくくらないと...
-
Data Pump で大量データインポ...
-
表領域の使用率がもうすぐ100%
-
他の処理でselectさせないよう...
-
datapumpの実行方法について
-
データ読込時のタイムアウト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT時に発番を行いたい
-
カラムの存在チェック
-
カラム情報とはなんですか?
-
GROUP BY で列名は指定できない...
-
SQL キーワード検索にて
-
SQL 同テーブル、同フィールド...
-
ACCESS 1クエリでの複数ALTER文
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
異なるスキーマからデータを抽...
-
datapumpの実行方法について
-
ORA-00959: 表領域'****'は...
-
CLOB型へのINSERT
-
Access レコードを追加できませ...
-
postgreSQLのint型は桁数指定が...
-
INDEXの無効化
-
SQLでスキーマ名(所有者名)の...
-
ACCESS 複数テーブル・複数フィ...
-
Data Pump で大量データインポ...
-
テーブルからのselectにおいて...
おすすめ情報