2

PHPとSSManagementStudioからMSSQLプロシージャをクエリしていますが、結果が異なりますか?

このクエリは、テーブルからtKeyで始まるフィールドを取得しています。tKey1とtKey2の2つの列が存在します

手順sp_myProc

DECLARE @tKeys VARCHAR(100);

SELECT @tKeys = ISNULL(@tKeys + ',', '') + column_name
FROM   testweberp.INFORMATION_SCHEMA.columns
WHERE  table_name = myTable
       AND LEFT(column_name, 4) = 'tKey'
ORDER  BY ordinal_position;

SELECT @tKeys 

SSMS、exec sp_myProcからクエリを実行すると、次の結果が得られます。tKey1,tKey2

phpからクエリを実行するとmssql_query("exec sp_myProc",$link)、次の結果が得られます。,tKey1,tKey2

はい、phpに送信される結果に余分なコンマがあります。これはphpによって生成されません。これは、の代わりに@tKeys、を返すlen(@tKeys)場合11、SSMSと12phpにあるためです。

4

1 に答える 1

5

SETCONCAT_NULL_YIELDS_NULLが原因のようです。

私のデータベースの1つで同様のクエリを使用すると、。の先頭にコンマが返されず、SET CONCAT_NULL_YIELDS_NULL ON。の先頭にコンマが返されSET CONCAT_NULL_YIELDS_NULL OFFます。

(MSDNから)注意してください

SET CONCAT_NULL_YIELDS_NULLの設定は、解析時ではなく、実行時または実行時に設定されます。

于 2012-10-22T11:19:46.510 に答える