2011-12-15 9 views
0

: 'SQLアポストロフィ私は空の文字列が含まれているSQLで文字列を生成することができますどのよう

を' 私はこれを試してみました:

COL1 NVARCHAR(50)@ DECLARE @TEST NVARCHAR(50)、 @ 'COL2' '' '[' + @ COL2 + ']' @ 'COL2' '' '' COL2 + '' COL2 '' ' ] '

SELECT @TEST

しかし、文字列は次のように見て終わる:

SELECT '[A]、' [B]

それはのように見える必要があります:

SELECT '' [A]、 '' [B]

ありがとうございます。 SQL内の文字列で

+2

あなたが学ぶ必要があります。1. [SQL通常は、このような何かをするだろうInjection](http://en.wikipedia.org/wiki/SQL_injection)および2. [パラメータ化されたクエリ](http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or -give-me-death.html) – Oded

答えて

3

つの単一引用符は出力に2を生成するために、あなたがそうのように、入力に4を配置する必要があるので、単一エスケープ単一引用符として扱われます。

SELECT @TEST = 'SELECT '''' ['+ @COL1 + '], '''' [' + @COL2+ ']' 
+0

ありがとう - それは働いた! – Rivka

1

さて、クイックアンサーは:''''(ダブルアップ)

SELECT 'XX''''XX'XX''XX

"なぜあなたはそれをしたいのですか"という部分は私を非常に緊張させるので、それを残しておきます。

0

文字列を連結する必要はありません。

SELECT @COL1, @COL2 

で十分です。 @ COL1と@ COL2のパラメータは、実際の値に自動的に置き換えられます。

ただし、このように列名を動的に宣言することはできません。パラメータonは値を表します。

SELECT [Name] FROM mytable WHERE [email protected] 

あなたが動的に列名を変更する場合は、あなたがすべてでアポストロフィを使用することはありません:

SET @sql = 'SELECT [' + @COL1 + '], [' + @COL2 + ' FROM mytable'; 
EXECUTE sp_executesql @sql; 
+0

ありがとう、私は実行時に列のエイリアス(パラメータ)と共に空の文字列を選択するSQL文字列を生成しようとしています。私は単にパラメータ値を選択するだけではありません。 – Rivka

関連する問題