MSDE FunClub | 最終更新日 : 2000/06/12 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) | ||
【第1章74p 〜 76p掲載】 |
-- [SQL01_20.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- 固定長文字列と可変長文字列の違いを認識します -- -- ( 件処理されました)のメッセージを抑止する SET NOCOUNT ON GO -- 作業用変数の宣言 -- 作業用変数はバッチ区間内だけ有効です(GOからGOの間) DECLARE @C char(10) -- 固定長文字列 DECLARE @CV varchar(10) -- 可変長文字列 -- 固定長文字列変数に1文字の代入 SELECT @C ='C' PRINT '' PRINT ' char 変数の値:[' + @C + ']' + ' LEN = ' + CAST(LEN(@C) AS char) -- 空白が付加される -- 可変長文字列変数に1文字の代入 SELECT @CV ='C' PRINT 'varchar 変数の値:[' + @CV + '] ' + ' LEN = ' + CAST(LEN(@CV) AS char) PRINT '' -- 固定長変数の場合、文字列比較のときは後ろの空白が無視される IF NOT @C = 'C' PRINT 'ERROR1' IF NOT @C = 'C ' PRINT 'ERROR2' IF NOT @C = 'C ' PRINT 'ERROR3' IF NOT @C = @CV PRINT 'ERROR4' -- 可変長変数の場合も文字列比較のときは後ろの空白が無視される IF NOT @CV = 'C' PRINT 'ERROR5' IF NOT @CV = 'C ' PRINT 'ERROR6' IF NOT @CV = 'C ' PRINT 'ERROR7' GO -- 一時テーブルを作成します(名前の前に#が1個ある) CREATE TABLE #TMP_MYTABLE( C char(10) , -- 固定長型 CV varchar(10) -- 可変長型 ) -- 一時テーブルにレコードを登録する -- C CV INSERT INTO #TMP_MYTABLE VALUES( '0' , '1' ); INSERT INTO #TMP_MYTABLE VALUES( '2 ' , '3 ' ); GO -- レコードを検索する。検索したレコードが存在すればEXISTSは真となる -- LIKE 演算によって、文字列のパターン認識を行う場合、固定長と可変長の違いが出る -- 固定長は文字列の後ろに空白が埋められる IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C = '0' ) PRINT 'C = ''0'' 検索OK-1' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C = '0 ' ) PRINT 'C = ''0 '' 検索OK-2' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C LIKE '0 ' ) PRINT 'C LIKE ''0 '' 検索OK-3A' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C LIKE '0 ' ) PRINT 'C LIKE ''0 '' 検索OK-3B' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C = '2' ) PRINT 'C = ''2'' 検索OK-4' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C = '2 ' ) PRINT 'C = ''2 '' 検索OK-5' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE C LIKE '2 ' ) PRINT 'C LIKE ''2 '' 検索OK-6' PRINT '' GO IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV = '1' ) PRINT 'CV = ''1'' 検索OK-1' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV = '1 ' ) PRINT 'CV = ''1 '' 検索OK-2' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV LIKE '1 ' ) PRINT 'CV LIKE ''1 '' BAD!!' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV LIKE '1 ' ) PRINT 'CV LIKE ''1 '' BAD!!' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV = '3' ) PRINT 'CV = ''3'' 検索OK-4' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV = '3 ' ) PRINT 'CV = ''3 '' 検索OK-5' IF EXISTS( SELECT * FROM #TMP_MYTABLE WHERE CV LIKE '3 ' ) PRINT 'CV LIKE ''3 '' 検索OK-6' PRINT '可変長文字列に対して、 CV LIKE ''1 '' のように空白を入れると検索失敗です' PRINT '固定長文字列の検索3A,3Bのパターンが失敗しています' GO -- 上で作成した一時テーブルを削除する DROP TABLE #TMP_MYTABLE GO