【问题标题】:Selecting data using varyng source column使用不同的源列选择数据
【发布时间】:2014-12-09 04:28:27
【问题描述】:

我想知道是否有办法选择“喜欢”。 例如,我有 h1、h2、h3 列,我希望我的选择根据用户输入选择要抓取的列。

Select like "user var will be 1,2 or 3" from table

你能有一个不同的选择还是我必须做 Select * from table然后过滤我的数据表?

虽然我有另一个方法是通过在 C# 中将 h 添加到 users var 中

Select 'h" + var + " ' from table

【问题讨论】:

    标签: c# sql-server-2008


    【解决方案1】:

    您可以即时构建查询:

    int col = Convert.ToInt32(request["usercolumn"]);
    string q = "SELECT h" + col + " FROM table";
    

    我的 c# 有点弱,但这里的要点是接受用户输入,确保它是一个整数并使用用户输入构建您的查询。

    【讨论】:

    • 这就是我想做的事情,我有''',但它失败了大声笑,所以我正在寻找其他方法,把额外的''去掉,非常感谢。
    【解决方案2】:

    SELECT * 通常是不好的做法。如果您执行数据表过滤之类的操作,我会明确指定可能的列。我还会考虑使用动态 SQL。 Dynamically choose column in SQL query

    【讨论】:

      【解决方案3】:

      Robbert 代码可以工作,但如果 use 输入大于 3 则会报错,最好像这样用例

      DECLARE @col int  = 1
      select case @col when 1 then h1
                       When 2 then h2
                       Else h3 END
      From table 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多