Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL server查询帮助_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server SQL server查询帮助

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

我正在将zipcodes列表传递给存储的进程,比如11111111112111113111114111115,邮政编码表只包含少数行,比如11111111112111113,现在我想编写一个查询,返回表11114和11115中不存在的邮政编码

有谁能帮我写一个这样的问题吗

提前感谢。

您已经使用连接构建了第一个查询

现在,您需要一个正确的JOIN/WHERE来包含zip表上对应记录为null的zip列表中的所有项目

编辑:这是一个示例

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

您如何将该邮政编码列表传递到存储过程?您想将邮政编码列表与数据库中的列表进行比较,最终得到数据库中没有的邮政编码列表?您需要在网站上注册,以供感兴趣的人参考。与权力斗争!我的错。我以为是这样的。