1 我在一個SQL表中有一些像text_en,text_es,text_de這樣的列。現在我想根據語言從一列中檢索值。 所以我創建了一個SQL字符串 SELECT @textfield FROM <table> 和VB代碼我用 cmd.AddWithValue("textfield", "text_" + lang) 但SQL返回列的名稱,而不是該列的值。我如何獲得價值?列名作爲參數 來源 2012-11-13 Makis +0 我不認爲你必須改變表設計的能力,你呢?理想情況下,語言將規範化爲一個值,而不是單獨的語言列。這允許您稍後添加更多語言而不更新表格模式,並且還允許更好的查詢,即'select * from where language = @ language''。 – A 回答 2 你也可以做 SELECT CASE @textfield WHEN 'text_en' THEN text_en WHEN 'text_es' THEN text_es WHEN 'text_de' THEN text_de END AS local_text FROM TableName 來源 2012-11-13 15:14:54 +0 +1 - 沒有動態的sql涉及 – Lamak +0 這種方法也在做這個竅門。特別是在我的情況下,因爲case-when-else結構涵蓋了任何未預測的lang字符串的事實 – Makis 1 不要將它作爲參數傳遞,請將其作爲字符串文字傳遞。你的SQL語句應該是如下形式: string col1name = 'somename'; string sql = 'SELECT ' + col1name + ' FROM TableName'; 但如果你有傳遞到WHERE第一個參數,你應該把它作爲像你在你的問題做了什麼的參數。 請注意:您的查詢,這種方式容易受到SQL Injection的影響。在你的情況下,你可以將你的級聯SQL語句傳遞給存儲過程,然後使用sp_executesql而不是EXEC()。 來源 2012-11-13 15:07:46 +1 SQL注入,任何人? – Oded +0 謝謝大家。馬哈茂德,你拯救我的一天! – Makis +0 @Makis - 非常謹慎地做這件事。它對[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) – Oded 1 無論如何,你不能使用變量是SQL中的列名,而不是這樣。 您需要使用動態SQL才能指定像這樣的列名稱。 我建議您閱讀The Curse and Blessings of Dynamic SQL以瞭解該主題的綜合治療方法。 來源 2012-11-13 15:09:16 Oded +0 thnx爲鏈接:) – Sohail 相關問題 1. 按列名稱分組作爲參數 2. 電源查詢列名作爲參數 3. 參數作爲列名在where子句 4. 將列名作爲參數傳遞? 5. 使用列名作爲參數 6. 節點名作爲參數 7. 列的名稱和/或表名作爲參數 8. python函數,允許您命名列(作爲函數參數) 9. LINQ - 訪問與列名稱的列作爲字符串參數 10. 選擇EntityObject和列名作爲參數的單個列 11. 作爲函數參數的變量名? 12. 使用函數名稱作爲參數 13. 匿名委託作爲函數參數 14. 傳遞函數名稱作爲參數 15. 函數參數作爲文件名 16. 通過匿名函數作爲參數 17. 傳遞列名作爲MySql函數的參數 18. 如何傳遞函數名稱列表作爲參數? 19. 使用DataFrame列名作爲R函數參數 20. 將列名作爲函數參數傳遞 - R 21. 如何將列名作爲參數傳遞給函數? 22. 在R函數中使用csv列名作爲參數 23. Oracle函數硬編碼列名稱作爲參數 24. 角$ routeprovider - 文件名作爲參數 25. 變量作爲參數名稱 26. 通過子域名作爲參數 27. 傳遞類名作爲參數 28. 模板參數名稱作爲基類 29. 的Getopt - 文件名作爲參數 30. 傳遞成員名稱作爲參數 最新問題 1. 通過全局變量遍歷()字典 2. 爲什麼Web元素只在一個列表中的一個元素? 3. 重定向與被迫小寫字母來識別文件名 4. html-webpack-plugin如何與html-loader一起使用? 5. 如何從gridview設置onClick圖像? 6. 實施ReactJS成角應用 7. 如何編輯kendogrid的pageSize的使100在1-10這個改變顏色,點擊執行功能 8. JavaFX 8:FXML的重用 9. C中ICMPv6校驗和計算返回錯誤結果 10. Array.Filter和找不到錯誤角度4 相關問題 1. 按列名稱分組作爲參數 2. 電源查詢列名作爲參數 3. 參數作爲列名在where子句 4. 將列名作爲參數傳遞? 5. 使用列名作爲參數 6. 節點名作爲參數 7. 列的名稱和/或表名作爲參數 8. python函數,允許您命名列(作爲函數參數) 9. LINQ - 訪問與列名稱的列作爲字符串參數 10. 選擇EntityObject和列名作爲參數的單個列
2 你也可以做 SELECT CASE @textfield WHEN 'text_en' THEN text_en WHEN 'text_es' THEN text_es WHEN 'text_de' THEN text_de END AS local_text FROM TableName 來源 2012-11-13 15:14:54 +0 +1 - 沒有動態的sql涉及 – Lamak +0 這種方法也在做這個竅門。特別是在我的情況下,因爲case-when-else結構涵蓋了任何未預測的lang字符串的事實 – Makis
1 不要將它作爲參數傳遞,請將其作爲字符串文字傳遞。你的SQL語句應該是如下形式: string col1name = 'somename'; string sql = 'SELECT ' + col1name + ' FROM TableName'; 但如果你有傳遞到WHERE第一個參數,你應該把它作爲像你在你的問題做了什麼的參數。 請注意:您的查詢,這種方式容易受到SQL Injection的影響。在你的情況下,你可以將你的級聯SQL語句傳遞給存儲過程,然後使用sp_executesql而不是EXEC()。 來源 2012-11-13 15:07:46 +1 SQL注入,任何人? – Oded +0 謝謝大家。馬哈茂德,你拯救我的一天! – Makis +0 @Makis - 非常謹慎地做這件事。它對[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) – Oded
1 無論如何,你不能使用變量是SQL中的列名,而不是這樣。 您需要使用動態SQL才能指定像這樣的列名稱。 我建議您閱讀The Curse and Blessings of Dynamic SQL以瞭解該主題的綜合治療方法。 來源 2012-11-13 15:09:16 Oded +0 thnx爲鏈接:) – Sohail
我不認爲你必須改變表設計的能力,你呢?理想情況下,語言將規範化爲一個值,而不是單獨的語言列。這允許您稍後添加更多語言而不更新表格模式,並且還允許更好的查詢,即'select * from
回答
你也可以做
來源
2012-11-13 15:14:54
+1 - 沒有動態的sql涉及 – Lamak
這種方法也在做這個竅門。特別是在我的情況下,因爲case-when-else結構涵蓋了任何未預測的lang字符串的事實 – Makis
不要將它作爲參數傳遞,請將其作爲字符串文字傳遞。你的SQL語句應該是如下形式:
但如果你有傳遞到
WHERE
第一個參數,你應該把它作爲像你在你的問題做了什麼的參數。請注意:您的查詢,這種方式容易受到SQL Injection的影響。在你的情況下,你可以將你的級聯SQL語句傳遞給存儲過程,然後使用
sp_executesql
而不是EXEC()
。來源
2012-11-13 15:07:46
SQL注入,任何人? – Oded
謝謝大家。馬哈茂德,你拯救我的一天! – Makis
@Makis - 非常謹慎地做這件事。它對[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) – Oded
無論如何,你不能使用變量是SQL中的列名,而不是這樣。
您需要使用動態SQL才能指定像這樣的列名稱。
我建議您閱讀The Curse and Blessings of Dynamic SQL以瞭解該主題的綜合治療方法。
來源
2012-11-13 15:09:16 Oded
thnx爲鏈接:) – Sohail
相關問題