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値 '、'をデータ型intに変換するときに変換に失敗しました
- 2. varchar値 'N'をデータ型intに変換するときに変換に失敗しました
- 3. varchar値をint型に変換するときに変換に失敗しました
- 4. SQLエラー:varcharの値 'PJOI015'をデータ型のビットに変換するときに変換に失敗しました
- 5. Laravelが "nvarchar値 '[]'をデータ型intに変換するときに変換に失敗しました"
- 6. nvarcharの値 'quiz.jpg'をデータ型intに変換するときに変換に失敗しました
- 7. SQL Server 2005でエントリを削除する - varchar値をデータ型intに変換するときに変換に失敗しました
- 8. データ型varcharをintに変換する際にエラーが発生しました
- 9. NHibernateで列挙型を使用してvarchar値xxxxをintに変換するときに変換に失敗しました
- 10. 変換の値が存在しないときに失敗したweb.config変換
- 11. 変換に失敗しました
- 12. 変換はデータ型intに
- 13. 小数点への変換が成功した後に 'varcharをデータ型数値に変換する'エラー
- 14. 変換に失敗しました
- 15. 算術オーバーフローエラーvarcharをデータ型数値に変換する
- 16. データ型varcharをfloatに変換中にエラーが発生しました
- 17. データ型varcharをbigintに変換中にエラーが発生しました(C#ASP.NET)
- 18. SQL Serverの文字列からuniqueidentifierエラーに変換するときに変換に失敗しました
- 19. 1行のファイルからデータ型varcharをfloatに変換する際にエラーが発生しました
- 20. AS3:エラー#1034:強制型変換に失敗しました:flash.display.DisplayObjectに変換できません
- 21. 'System.String'型から '' X '型へのパラメータ変換は、型変換器がこれらの型の間で変換できないため失敗しました
- 22. C#文字列から日付や時刻を変換したときに変換に失敗しました
- 23. エラーメッセージ文字列からdatetimeを変換するときに変換に失敗しました
- 24. レポートサービスの文字列からdatetimeを変換するときに変換が失敗しました
- 25. linq関数は型変換時に失敗する
- 26. SQLでの文字列の変換に失敗しました
- 27. 変換int型
- 28. SQLストアドプロシージャの変換に失敗しました
- 29. doubleをint型に変換した文字列に変換する
- 30. 文字列からユニーク識別子に変換するときに変換に失敗しました
WHERE ID INをWHERE CAST(IDはvarchar(5))のINに置き換えるとどうなりますか? – CarneyCode
私は@Trarothに同意します。コンマで区切られた値の文字列として返されるIDのリストは、**データベース設計の問題**を示唆しています。本当に 'x'テーブルに' catIDs'カラムがありますか?これは単なる例であり、実際には格納されたrpocedureから返されるか、フラットファイルから取り出されますか? –
@Carnotaurus:それは働いていますが、 'x、y'ではなく 'x'、 'y'を探しているので正しい結果を返さない –