CONVERT(VARCHAR(10), '2012-08-21 00:16:41.993', 101)
行/列のように、SQL 定義済み関数を格納するテーブルがあります。テーブルから結果を取得している間、関数を実行して最終結果を「2012-08-21」として返す必要がありますが、現在は同じ関数ステートメントを返します。select (select RunDate from RunDate)
SQLサーバーデータベースを実行して使用しています。
助けてください!!
CONVERT(VARCHAR(10), '2012-08-21 00:16:41.993', 101)
行/列のように、SQL 定義済み関数を格納するテーブルがあります。テーブルから結果を取得している間、関数を実行して最終結果を「2012-08-21」として返す必要がありますが、現在は同じ関数ステートメントを返します。select (select RunDate from RunDate)
SQLサーバーデータベースを実行して使用しています。
助けてください!!
これには動的SQLを使用する必要があります。式をネストしてSQLに出力を評価させることはできません...
DECLARE @x TABLE(sql NVARCHAR(255));
INSERT @x(sql) SELECT N'CONVERT(VARCHAR(10), ''2012-08-21 00:16:41.993'', 101)';
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = N'SELECT ' + sql FROM @x;
EXEC sp_executesql @sql;
これは次のようになります(それに応じて調整します):
DECLARE @predef VARCHAR(1000);
DECLARE @sqlquery VARCHAR(1000);
SELECT @predef = (SELECT top 1 Value FROM Parameters Where Name = 'MYFUNC');
SET @sqlquery = 'select ' + @predef + ' from SomeTable';
EXECUTE ( @sqlquery );
ヒント:ここにドラゴンがいます。SQLインジェクションに注意してください。