Sql server SQL server查询帮助
我正在将zipcodes列表传递给存储的进程,比如11111111112111113111114111115,邮政编码表只包含少数行,比如11111111112111113,现在我想编写一个查询,返回表11114和11115中不存在的邮政编码 有谁能帮我写一个这样的问题吗 提前感谢。您已经使用连接构建了第一个查询 现在,您需要一个正确的JOIN/WHERE来包含zip表上对应记录为null的zip列表中的所有项目 编辑:这是一个示例Sql server SQL server查询帮助,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我正在将zipcodes列表传递给存储的进程,比如11111111112111113111114111115,邮政编码表只包含少数行,比如11111111112111113,现在我想编写一个查询,返回表11114和11115中不存在的邮政编码 有谁能帮我写一个这样的问题吗 提前感谢。您已经使用连接构建了第一个查询 现在,您需要一个正确的JOIN/WHERE来包含zip表上对应记录为null的zip列表中的所有项目 编辑:这是一个示例 CREATE TABLE ZipCodesTable(Code
CREATE TABLE ZipCodesTable(Code int NOT NULL)
CREATE TABLE ZipCodesList (Code int NOT NULL)
INSERT INTO ZipCodesTable (Code) VALUES (11111)
INSERT INTO ZipCodesTable (Code) VALUES (11112)
INSERT INTO ZipCodesTable (Code) VALUES (11113)
INSERT INTO ZipCodesList (Code) VALUES (11111)
INSERT INTO ZipCodesList (Code) VALUES (11112)
INSERT INTO ZipCodesList (Code) VALUES (11113)
INSERT INTO ZipCodesList (Code) VALUES (11114)
INSERT INTO ZipCodesList (Code) VALUES (11115)
SELECT ZipCodesList.Code
FROM ZipCodesTable RIGHT
JOIN ZipCodesList
ON ZipCodesTable.Code = ZipCodesList.Code
WHERE ZipCodesTable.Code IS NULL
本文使用CTE获取您的条目字符串,将其转换为一个表,以便您可以在查询中包含:由于不知道您的具体实现,这个快速而肮脏的查询应该适合您正在尝试的内容。从您传递的列表中选择不在完整邮政编码表中的邮政编码:
SELECT ZipCode
FROM PassedList
WHERE ZipCode NOT IN (
SELECT DISTINCT ZipCode
FROM ZipCodeTable
)
不需要在SQL中创建表,在存储的进程中使用临时表。如果您需要将拉链作为字符串传递,请使用此选项。如果您有一个表值参数,则可以将其作为表传入
CREATE PROCEDURE spCheckZip
@Zips varchar(256) --space delimited list of zips
AS
IF OBJECT_ID('tempdb..#ZipCheck') IS NOT NULL
DROP TABLE #ZipCheck
CREATE TABLE #ZipCheck (zipcode string) --Note string not int for zips with leading 0's.
IF CharIndex(' ',@Zips) > 1
BEGIN
Declare @StartPos as int
Declare @ZipCd As Varchar(16)
set @StartPos = 2
set @ZipCd = substring(@Zips,1,CharIndex(',',@Zips))
WHILE @StartPos > 1 and @StartPos < Len(@Zips)
BEGIN
INSERT Into #ZipCheck (zipcode)
SELECT Substring(@ZipCd,1,len(@ZipCd)-1)
SET @StartPos = charindex(',',@Zips, @StartPos)+1
SET @ZipCd = substring(@Zips,@StartPos,CharIndex(',',@Zips))
END
END
SELECT ZipCode
FROM ZipCheck LEFT JOIN YourZipTable on ZipCheck.zipcode=YourZipTable.YourZipField
WHERE YourZipTable.YourZipField IS NULL
您如何将该邮政编码列表传递到存储过程?您想将邮政编码列表与数据库中的列表进行比较,最终得到数据库中没有的邮政编码列表?您需要在网站上注册,以供感兴趣的人参考。与权力斗争!我的错。我以为是这样的。