いつもお世話になります。
OS:Windows XP
SQL Server2005 ExpressEditionです。
テーブル名:testTable
列 :(1)number(intで主キーで自動採番)(2)name(nvarchar(50))
ストアドプロシージャを以下のSQL文で作成しました。
insert into testTable (name) values('');
update testTable set name = ltrim(str(SCOPE_IDENTITY())) + '_table' where number=SCOPE_IDENTITY();
(説明)
インサート文;(セミコロンを打っています)
アップデート文;(セミコロンを打っています)
なぜこんなことをするかと言いますと、
自動採番で取得した番号を列:nameの内容の一部にしたいためです。
つまり、列:numberが12で採番されたとすると列:nameは 12_table と
したいためです。
ltrimをかけていますのは、str(SCOPE_IDENTITY())の結果、数値の左
に空白が入ってしまうためです。(intのバイト数ほどでしょうか)
想定どおりの値がnameに入っております。
しかしこれは邪道ではないかと危惧しております。
よろしくご教授をお願いいたします。
No.1ベストアンサー
- 回答日時:
str関数は固定長で右揃えした文字列を出力する関数っぽいですね。
http://technet.microsoft.com/ja-jp/library/ms174 …
整数を文字列に変換するなら、素直に
cast(XX as varchar)の方がTrimもいらない様だし安心かと。
あと、"_table"の部分がテーブル単位で固定であるなら
ストアド内で書きこむのではなく、トリガーとか、計算列とか、
場合によってはビューの使用も考慮していいんじゃないかという気がします。
ご回答ありがとうございます。
CAST()というのを知りませんでした。
おっしゃるとおりTrimをかけたりするのはスマートではないと考えていました。
またトリガの使用も考慮してみます。
あれから調べてみましたが、
ひとつのSQL文を、BEGIN~ENDでくくりこれをトランザクションの中で実行してみようかと考えていました。
またよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
Access:クエリーにて集計後に...
-
SELECT 文 GROUP での1件目を...
-
SQLで列名を変数にできないでし...
-
列番号による項目の取得について
-
【VB.NET】日付型の列にNULLを...
-
テーブル列数とデータファイル...
-
SQLです教えてくださいお願いし...
-
列のヘッダーを含めるのをデフ...
-
ストアドプロシージャに複数のS...
-
DB2のSQL
-
Accessのリストボックスについて
-
重複データの抽出方法(複数項目)
-
Accessでの全データから空白削除
-
SQLによる"あいうえお"順でソー...
-
項目名に大文字と小文字の混在...
-
SQLでn番目からm番目を取得したい
-
差し込み後、元データを変更し...
-
質問です How is your school l...
-
フィルターかけた後、重複を除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
列のヘッダーを含めるのをデフ...
-
Access:クエリーにて集計後に...
-
SQLで列名を変数にできないでし...
-
SQLによる"あいうえお"順でソー...
-
列番号による項目の取得について
-
UPDATE文のWHERE条件に他のテー...
-
【VB.NET】日付型の列にNULLを...
-
テーブル列数とデータファイル...
-
特定の文字列で列を区切るには?
-
項目名に大文字と小文字の混在...
-
複数列の最大値を求めたい
-
DB2のSQL
-
特定の列だけをGROUP BYしたい時
-
Accessでの全データから空白削除
-
identity属性の列に自動採番(SQL)
-
IDENTITY列の更新で失敗する
-
v$processのPROGRAM列に関する質問
-
SQLでn番目からm番目を取得したい
おすすめ情報