分配变量以在查询中使用
Assigning variables to use in query
我正从 Oracle 迁移到 SQL 服务器,我注意到在查询中分配变量方面的差异。我想知道是否有人可以给我写一个简单的示例,说明我如何在 SSMS 中执行此操作?
在下面的示例中,我希望在 select 语句的开头分配变量 @date1,这样我就可以简单地更改顶部的日期,而不必在查询 @date1 被多次使用的地方。
SELECT *
FROM table
where date = @date1
谢谢
根据您的示例,语法如下:
DECLARE @date1 DATETIME
SET @date1 = '2017-01-01 00:00:00.000'
然后在您的查询中引用@date1,如上所示。
更广泛地说,语法是:
DECLARE @<name of variable> <type>
SET @<name of variable> = <value>
DECLARE @date1 DATE = '2018-04-11'
此代码可能没问题,但请注意日期格式:date (Transact-SQL)
以及使用 Date、Datetime 或 Datetime2 的需要。
-- Simple declares
DECLARE @Variable1 VARCHAR(100)
DECLARE @Variable2 DATE
DECLARE @VariableTable TABLE (
numberColumnName INT,
textColumnName VARCHAR(MAX))
-- Chained declares
DECLARE
@Variable3 VARCHAR(100),
@Variable4 INT
-- Declare with initiation
DECLARE @Variable5 INT = 150
DECLARE @Variable6 DATE = '2018-05-05' -- Implicit conversion (varchar to date)
DECLARE @Variable7 FLOAT = 1945.15 * 1648.12 / @Variable5 -- Expressions can be used
DECLARE @Variable8 INT = (SELECT COUNT(1) FROM sys.objects)
-- Chained declares with initiation
DECLARE
@Variable9 VARCHAR(100) = 'Afla',
@Variable10 INT = 9164 * @Variable5
-- Change variable values (without declaring)
SET @Variable1 = 'Some value'
SET @Variable2 = CONVERT(DATE, GETDATE())
以你的例子为例:
DECLARE @DateFilter DATE = '2018-05-16' -- Use ISO standard date format (yyyy-MM-dd) when you hard-code them as literals
SELECT
*
FROM
YourTable AS T
WHERE
T.DateToFilter >= @DateFilter
我正从 Oracle 迁移到 SQL 服务器,我注意到在查询中分配变量方面的差异。我想知道是否有人可以给我写一个简单的示例,说明我如何在 SSMS 中执行此操作?
在下面的示例中,我希望在 select 语句的开头分配变量 @date1,这样我就可以简单地更改顶部的日期,而不必在查询 @date1 被多次使用的地方。
SELECT *
FROM table
where date = @date1
谢谢
根据您的示例,语法如下:
DECLARE @date1 DATETIME
SET @date1 = '2017-01-01 00:00:00.000'
然后在您的查询中引用@date1,如上所示。
更广泛地说,语法是:
DECLARE @<name of variable> <type>
SET @<name of variable> = <value>
DECLARE @date1 DATE = '2018-04-11'
此代码可能没问题,但请注意日期格式:date (Transact-SQL) 以及使用 Date、Datetime 或 Datetime2 的需要。
-- Simple declares
DECLARE @Variable1 VARCHAR(100)
DECLARE @Variable2 DATE
DECLARE @VariableTable TABLE (
numberColumnName INT,
textColumnName VARCHAR(MAX))
-- Chained declares
DECLARE
@Variable3 VARCHAR(100),
@Variable4 INT
-- Declare with initiation
DECLARE @Variable5 INT = 150
DECLARE @Variable6 DATE = '2018-05-05' -- Implicit conversion (varchar to date)
DECLARE @Variable7 FLOAT = 1945.15 * 1648.12 / @Variable5 -- Expressions can be used
DECLARE @Variable8 INT = (SELECT COUNT(1) FROM sys.objects)
-- Chained declares with initiation
DECLARE
@Variable9 VARCHAR(100) = 'Afla',
@Variable10 INT = 9164 * @Variable5
-- Change variable values (without declaring)
SET @Variable1 = 'Some value'
SET @Variable2 = CONVERT(DATE, GETDATE())
以你的例子为例:
DECLARE @DateFilter DATE = '2018-05-16' -- Use ISO standard date format (yyyy-MM-dd) when you hard-code them as literals
SELECT
*
FROM
YourTable AS T
WHERE
T.DateToFilter >= @DateFilter