当我执行该语句时,我有一个动态 sql 语句,然后我收到错误无法解决“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突
我使用 COLLATESQL_Latin1_General_CP1_CI_AS or COLLATE DATABASE_DEFAULT
但仍然出现错误
这是我的 sql snap
ALTER PROC SearchByJID
(
@JID VARCHAR(max),
@TrackNo VARCHAR(max),
@PageSize INT,
@PageNumber INT
)
AS
DECLARE @SQL VARCHAR(MAX)
DECLARE @Count_SQL VARCHAR(MAX)
DECLARE @RowStart INT
DECLARE @RowEnd INT
SET @PageNumber = @PageNumber - 1
SET @RowStart = @PageSize * @PageNumber + 1
SET @RowEnd = @RowStart + @PageSize - 1
SET @SQL=''
SET @Count_SQL=''
BEGIN
SET @SQL='SELECT * FROM (SELECT Row_number() OVER (ORDER BY [bbajobs].JID ) AS RowNumber,
[BBAJobs].[JID],[AccountReference] as [Acc Ref],[BBAJobs].[OEReference] as [OERef],[JobType],[JobState],
[JobShippedDate],[UPSShippingNumber],[CustomerName] [Customer Name],[ContactName] [Contact Name],[Telephone],
[JobDescription],[CallRem].[rem],[CallRem].[callStatus],[CallRem].[ShopRemarks],
CustomerNotes,ShopNotes,RecievedDate,UserName FROM dbo.BBAJobs LEFT OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid WHERE 1<2 '
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
IF ltrim(rtrim(@JID)) <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@JID+''', '','')) '
END
SET @SQL=@SQL+') x WHERE RowNumber BETWEEN '+CAST(@RowStart AS VARCHAR)+' AND '+CAST(@RowEnd AS VARCHAR)
-- Get Count
SET @Count_SQL= 'SELECT COUNT(bbajobs.[JID]) FROM dbo.BBAJobs LEFT OUTER JOIN dbo.CallRem
ON dbo.BBAJobs.JID = dbo.CallRem.jid WHERE 1<2 '
IF @TrackNo <> ''
BEGIN
SET @Count_SQL=@Count_SQL+' AND bbajobs.jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
IF ltrim(rtrim(@JID)) <> ''
BEGIN
SET @Count_SQL=@Count_SQL+' AND bbajobs.jid IN (SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@JID+''', '',''))'
END
END
exec(@SQL+@Count_SQL)
特别是当我发送轨道号时我收到错误所以我想这是错误所在
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail WHERE TRACKNO IN(
SELECT CONVERT(VARCHAR, data) AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END
所以指导我在 sql 中改变什么来解决这个问题。
我这样做并解决了问题
IF @TrackNo <> ''
BEGIN
SET @SQL=@SQL+' AND [bbajobs].jid IN (select jid from trackdetail
WHERE TRACKNO COLLATE DATABASE_DEFAULT IN(
SELECT data COLLATE DATABASE_DEFAULT AS [JID]
FROM dbo.Split1('''+@TrackNo+''', '','')))'
END