SQL:仅是数字的 varchar 字段(帐号)循环期间出现语法错误
SQL: Syntax error during loop for varchar field (Account Numbers) which are solely numerics
我正在尝试使用帐户 # 从 1 个大型数据集创建多个 table。我正在尝试循环,以便不必手动更新标准(超过 40 个帐户)。循环有效,但只是部分有效。显然有一些帐号看起来像数字(例如 123456),而大多数帐号有一些字母和数字的组合(例如)AB1CD2。后一个帐号流过就好了,但我收到 table 中所有其他帐户的语法错误(消息 102,级别 15,状态 1,第 1 行)。帐户字段(托运人)已经是一个 varchar。以下是查询示例:
DECLARE ABCAccounts CURSOR
GLOBAL
FOR SELECT DISTINCT Shipper FROM dbo.ABCCompany
OPEN ABCAccounts
DECLARE @Shipper varchar(6)
FETCH NEXT FROM ABCAccounts INTO @Shipper
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @Maketable varchar(1000)
SELECT @Maketable=
'SELECT TOP 1000 *
INTO '+@Shipper+'
FROM [dbo].[ABCCompany]
WHERE Shipper='''+@Shipper+''''
EXEC (@Maketable)
FETCH NEXT FROM ABCAccounts INTO @Shipper
END
CLOSE ABCAccounts
我对 SQL 数据类型的了解还不够,不知道我是否可以解决这个问题。如有任何想法,我们将不胜感激。
如果这是 SQL 服务器,这应该有效:
'SELECT TOP 1000 *
INTO ['+@Shipper+']
FROM [dbo].[ABCCompany]
WHERE Shipper='''+@Shipper+''''
如果您使用特殊字符或以数字开头,则必须将名称括在 [] 中。
我正在尝试使用帐户 # 从 1 个大型数据集创建多个 table。我正在尝试循环,以便不必手动更新标准(超过 40 个帐户)。循环有效,但只是部分有效。显然有一些帐号看起来像数字(例如 123456),而大多数帐号有一些字母和数字的组合(例如)AB1CD2。后一个帐号流过就好了,但我收到 table 中所有其他帐户的语法错误(消息 102,级别 15,状态 1,第 1 行)。帐户字段(托运人)已经是一个 varchar。以下是查询示例:
DECLARE ABCAccounts CURSOR
GLOBAL
FOR SELECT DISTINCT Shipper FROM dbo.ABCCompany
OPEN ABCAccounts
DECLARE @Shipper varchar(6)
FETCH NEXT FROM ABCAccounts INTO @Shipper
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @Maketable varchar(1000)
SELECT @Maketable=
'SELECT TOP 1000 *
INTO '+@Shipper+'
FROM [dbo].[ABCCompany]
WHERE Shipper='''+@Shipper+''''
EXEC (@Maketable)
FETCH NEXT FROM ABCAccounts INTO @Shipper
END
CLOSE ABCAccounts
我对 SQL 数据类型的了解还不够,不知道我是否可以解决这个问题。如有任何想法,我们将不胜感激。
如果这是 SQL 服务器,这应该有效:
'SELECT TOP 1000 *
INTO ['+@Shipper+']
FROM [dbo].[ABCCompany]
WHERE Shipper='''+@Shipper+''''
如果您使用特殊字符或以数字开头,则必须将名称括在 [] 中。