[英]SQL Server query syntax error
我寫了一個SQL Server查詢:
declare @TaxYear VARCHAR(50)
set @TaxYear='13'
declare @BBL VARCHAR(50)
set @BBL=''
declare @Appartment VARCHAR(50)
set @Appartment=''
declare @ResidenceTypeDescription VARCHAR(200)
set @ResidenceTypeDescription=''
declare @SN1 VARCHAR(20)
set @SN1=''
declare @SN2 VARCHAR(20)
set @SN2=''
declare @Status VARCHAR(100)
set @Status='Unassigned'
declare @RowIndex INT
set @RowIndex=1
declare @MaxRows INT
set @MaxRows=25
declare @SortExpression varchar(50)
set @SortExpression='bbl desc'
declare @sql varchar(max)
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = @RowIndex
SET @EndRow = ( @StartRow + @MaxRows ) - 1
set @sql= 'SELECT *
FROM ( SELECT * ,
ROW_NUMBER() OVER ( ORDER BY '+@SortExpression +') AS ROW
FROM vwApplicationList
WHERE TaxYear = '+@TaxYear+'
AND Status = '+@Status+'
AND REPLACE(BBL, ''--'', '''') LIKE ''%' + @BBL
+ '%''
AND COALESCE(UnitOrAppartmentNumber, '''') LIKE ''%'
+ @Appartment + '%''
AND COALESCE(ResidenceTypeDescription, '''') LIKE ''%'
+ @ResidenceTypeDescription + '%''
AND ( COALESCE(SN1, '''') LIKE ''%' + @SN1 + '%''
OR COALESCE(SN2, '''') LIKE ''%' + @SN2
+ '%''
)
) AS NumberedUsers
WHERE ROW BETWEEN '+@StartRow+' AND '+@EndRow
exec (@sql)
當我運行此查詢時,我收到一個錯誤:
問題是在您的查詢結束時,您嘗試連接整數值,您已將其轉換為varchar ...
declare @TaxYear VARCHAR(50)
set @TaxYear='13'
declare @BBL VARCHAR(50)
set @BBL=''
declare @Appartment VARCHAR(50)
set @Appartment=''
declare @ResidenceTypeDescription VARCHAR(200)
set @ResidenceTypeDescription=''
declare @SN1 VARCHAR(20)
set @SN1=''
declare @SN2 VARCHAR(20)
set @SN2=''
declare @Status VARCHAR(100)
set @Status='Unassigned'
declare @RowIndex INT
set @RowIndex=1
declare @MaxRows INT
set @MaxRows=25
declare @SortExpression varchar(50)
set @SortExpression='bbl desc'
declare @sql varchar(max)
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = @RowIndex
SET @EndRow = ( @StartRow + @MaxRows ) - 1
set @sql=
'SELECT *
FROM ( SELECT * ,
ROW_NUMBER() OVER ( ORDER BY '+@SortExpression +') AS ROW
FROM vwApplicationList
WHERE TaxYear = '+@TaxYear+'
AND Status = '+@Status+'
AND REPLACE(BBL, ''--'', '''') LIKE ''%' + @BBL
+ '%''
AND COALESCE(UnitOrAppartmentNumber, '''') LIKE ''%'
+ @Appartment + '%''
AND COALESCE(ResidenceTypeDescription, '''') LIKE ''%'
+ @ResidenceTypeDescription + '%''
AND ( COALESCE(SN1, '''') LIKE ''%' + @SN1 + '%''
OR COALESCE(SN2, '''') LIKE ''%' + @SN2
+ '%''
)
) AS NumberedUsers
WHERE ROW BETWEEN '+ Convert(varchar,@StartRow)+' AND '+Convert(varchar,@EndRow)
exec (@sql)
將@StartRow
替換為CAST(@StartRow AS VARCHAR(50))
和@EndRow
with
CAST(@EndRow AS VARCHAR(50))
使用: convert(int,@StartRow)
和convert(int,@EndRow)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.