【ADO.NET】DataSetで数値型とカンマ付き文字列とのリーレーションの方法

テーブルの構造上、よく使うクエリなのでメモ。
データベースは、Access。
xsdファイルでDataSetを作成時、以下のような二つのテーブルのリレーションを行う。

table1

id name
1 りんご
2 みかん
3 バナナ
table2

code cost
,1, 100円
,2, 200円
,3, 300円

ここで、table1のidだけがint型。
table1 の id と table2 の code で join する。
table2 の code から ’,’ を取り除いて int型に直して連結すればいい。
しかし、ADO.NET(Access環境だから??)では、REMOVE()関数が使えない。。。(未定義の関数としてエラーが出る。)
そこでMID()関数を使って ‘,’ 以外の数値部分だけを抽出し、それをint型に変換することでjoinすることにした。
作成したSQL文は次の通り。

SELECT * FROM table1
LEFT OUTER JOIN table2
ON 
table1.id = CINT(MID(table2.code, 2, LEN(table2.code)-2))

逆に table1.id に ‘,’ を付与してstring型に直して連結を試みたが、副問合せを使わないといけなくなり、さらに冗長でややこしくなる。
REMOVE()関数が使えればもっとシンプルにSQLかけるのに。。。

コメントを残す

メールアドレスが公開されることはありません。

eighteen + 13 =