SQLServerのデータ検索でカードNOをあいまい検索で条件指定して検索したいです。
カードの番号を入力してデータを検索してレコードを重複しないように
取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみです。ややこしくて申し訳ないのですが
・1~8桁目は会社のコードで00700000か00710000の2択です。
・9~14桁目はカードに記載されている個別番号で、重複はしません
・15,16桁目はチェックデジットのコードです。
カード記載の9~14桁目を入力するだけでレコードを取得できるようにしたく、ビジュアルスタジオにVBで以下のコードを組みました。DBMSはSQLServerです。
Private
1Try 2 3 Dim locSqlStr As String = "" 4 5 Dim loc_dataset As New DataSet 6 loc_dataset.Clear() 7 Using conn = New SqlConnection(gConnstring) 8 conn.Open() 9 Using cmd = conn.CreateCommand 10 cmd.CommandText = 11 " 12SELECT [CARDNO] 13 ,[KINGAKU] 14 ,[NAME] 15FROM [PREPAID].[dbo].[ZANDAKAMST] 16 where CARDNO LIKE '%'+'$CARNO$'+'%'" 17 18 cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD) 19(文字数の関係で以下略)
このコードで起動し、試しに0070000018000390というカードのデータを取得しようとカード記載の6桁180003を入力したところ、データが見つからないというエラー表示が出ました。しかし、カードの16桁すべてを入力したところデータの取得ができました。
SQLServerにて
SELECT [CARDNO] ,[KINGAKU] ,[NAME] FROM [PREPAID].[dbo].[ZANDAKAMST] where CARDNO LIKE '%'+'180003'+'%'"
と入力し実行してもデータの取得ができたのでwhere CARDNO LIKE '%'+'$CARNO$'+'%'の部分がまずかったのかと思うのですがどうすればよいのでしょうか?
回答2件
あなたの回答
tips
プレビュー