1

SQLコードまたはC#コードを使用して動的SQLステートメントを作成しようとしています。たとえば、テーブル名を含む文字列に基づいて結果セットを生成したいとします。現在、私はこれをc#コードで行っています。

私の現在の問題は、次のような検索を生成したいです

select * from customers
where ContactName+City like '%Berlin%'

'ContactName+City+etc'したがって、文字列パラメータとしてテーブル名を指定することを考えています。検索の一部を構築するために、何らかの方法で文字列変数を生成する必要があります。

私は他のアイデアも受け入れています。

var sql = string.Format(@"
select * from {0}
where {1} like '%criteria%'"
, variable_table
, "column1+column2+columnX"); //need function here to produce this string based on variable table?

基本的'ContactName+City+etc'に、variable_tableに基づいて可変数の列を連結する文字列()を作成するにはどうすればよいですか?

4

2 に答える 2

2

なぜこれだけではないのですか?

      select * from variable_table_name
      WHERE column1+column2+columnX like '%criteria%'
于 2012-12-05T03:08:31.533 に答える
1

これは、純粋にSQLでも実行できます。ただし、これはすでにC#で行っており、テーブル名に基づいて列のリストを取得するだけでよいので、これを試してください。

以下のようにSQLudfを作成します。

CREATE FUNCTION funcReturnAllColumns
(
    @tableName VARCHAR(50)
)
RETURNS VARCHAR(500)
BEGIN

DECLARE @ID INT
DECLARE @ALLColumns VARCHAR(500)

SET @ALLColumns = ''

SELECT @ID = id
FROM sys.sysobjects
WHERE name = @tableName


SELECT @ALLColumns = @ALLColumns + '+' + name 
FROM sys.syscolumns
WHERE id = @ID

RETURN SUBSTRING(@ALLColumns,2,LEN(@ALLColumns))

END


SELECT dbo.funcReturnAllColumns('table_name')

出力:Column1 + Column2 + ..... + ColumN

必要に応じて、varcharの制限、検証を調整する必要がある場合があります。

于 2012-12-05T22:53:56.957 に答える