varcharデータ型としてカンマで区切られたcat IDを含むことができる列を持つテーブルカテゴリ(c)と別のテーブル(x)があります。関連カテゴリを選択したいが、 "varchar値 '5'をデータ型intに変換すると変換に失敗しました。"選択しようとすると:私は右のそれを取得する場合は、「1,3,4」varchar値 '1'をデータ型intに変換するときに変換が失敗しました
2
A
答えて
4
サブクエリによって返された1,3,4
文字列を別のint
値に分割する必要があります。 SQL Serverには組み込み関数がありませんが、this user-defined functionを使用できます。
次のようにデータベース、その後、再書き込みクエリで機能dbo.Split
を作成します。
SELECT ID, Title
FROM c
WHERE ID IN
(
SELECT s
FROM dbo.Split(',', '1,3,4')
)
私は一例でサブクエリを置き換えクエリを短くし、それが簡単に理解できるようにすること1,3,4
を結果。
+0
はい、http://stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-recor/314917#314917を使用します。関数。ありがとうございました。 –
1
よう
SELECT ID, Title FROM c WHERE ID IN (SELECT catIDs FROM x WHERE ID=any);
サブクエリが返すデータを、あなたが実際にあなたのコラムcatIDsで「1,3,4」のような値を持っています。したがって、サブクエリを選択して部分文字列を抽出する必要があります。
ところで、私はMS SQL Serverのエキスパートではありませんが、おそらくそれを行うには悪いデータベース設計です。このような場合にRDBMSエンジンがインデックスを使用するかわかりません...
関連する問題
- 1. varchar値 'xxx'をデータ型intに変換するときに変換に失敗しました
- 2. varchar値 '7:00'をデータ型intに変換するときに変換に失敗しました
- 3. varchar値 '' .... "'をデータ型intに変換するときに変換に失敗しました
- 4. SQLでvarchar値をデータ型intに変換するときに変換に失敗しました
- 5. SSMS 2008 varchar値 '2.126'をデータ型intに変換するときに変換に失敗しました
- 6. varchar値 '*'をデータ型intに変換するときにSQL変換に失敗しました
- 7. varchar値 '0%'をデータ型intに変換するときに変換に失敗しました
- 8. varchar値 'RN'をデータ型intに変換するときに変換に失敗しました
- 9. varchar値 'LAST1、FIRST1'をデータ型intに変換するときに変換に失敗しました
- 10. エラー:varchar値 '、'をデータ型intに変換するときに変換に失敗しました
- 11. varchar値 'N'をデータ型intに変換するときに変換に失敗しました
- 12. varcharをINTに変換するときに変換が失敗しました
- 13. varchar値をint型に変換するときに変換に失敗しました
- 14. エラー:varchar値'10 .8 'をデータ型に変換するときに変換に失敗しました
- 15. SQLエラー:varcharの値 'PJOI015'をデータ型のビットに変換するときに変換に失敗しました
- 16. varchar値をデータ型intに変換するときに変換に失敗しましたが、何も変換しません。
- 17. Laravelが "nvarchar値 '[]'をデータ型intに変換するときに変換に失敗しました"
- 18. nvarchar値 'B'をデータ型intに変換するときに変換に失敗しました
- 19. nvarcharの値 'quiz.jpg'をデータ型intに変換するときに変換に失敗しました
- 20. nvarchar値 'ABC113973'をデータ型intに変換するときに変換に失敗しました
- 21. nvarchar値 '3255+'をデータ型intに変換するときに変換に失敗しました。
- 22. "nvarchar値 '113332,113347'をデータ型intに変換するときに変換に失敗しました。
- 23. varcharをdatetimeに変換するときに変換に失敗しました
- 24. ストアドプロシージャを呼び出すときにvarchar値をデータ型intに変換するときに変換に失敗しました
- 25. intをvarcharデータ型に変換する
- 26. SQL Server 2005でエントリを削除する - varchar値をデータ型intに変換するときに変換に失敗しました
- 27. varcharの値「2年-2月21日」をデータ型intに変換するときに変換に失敗しました
- 28. データ型varcharをintに変換する際にエラーが発生しました
- 29. varchar値 'string'をデータ型intに変換するときに変換を取得できません
- 30. NHibernateで列挙型を使用してvarchar値xxxxをintに変換するときに変換に失敗しました
WHERE ID INをWHERE CAST(IDはvarchar(5))のINに置き換えるとどうなりますか? – CarneyCode
私は@Trarothに同意します。コンマで区切られた値の文字列として返されるIDのリストは、**データベース設計の問題**を示唆しています。本当に 'x'テーブルに' catIDs'カラムがありますか?これは単なる例であり、実際には格納されたrpocedureから返されるか、フラットファイルから取り出されますか? –
@Carnotaurus:それは働いていますが、 'x、y'ではなく 'x'、 'y'を探しているので正しい結果を返さない –