-2
Declare @string nvarchar(20)
set @string=(select [Bill Period] from [sqldata].[dbo].[jun1])
select substring (@string,1,3)

我从整个列 [Bill period] 中只得到一个值,我想要从 [Bill Period] 到 @string 的所有记录,但它不起作用。

如何增加表 INDEX 并获取记录

declare @INDEX int
set @INDEX=1
while(@INDEX<3)
begin
Declare @string nvarchar(20)
set @string=(select [Bill Period] from [sqldata].[dbo].[jun1])
select substring (@string,1,3)
set @INDEX=@INDEX+1
end
4

5 回答 5

2

如果 [sqldata] 是您的数据库名称,那么正确的顺序是:

select [Bill Period] from [sqldata].[dbo].[jun1]
于 2013-10-03T11:05:54.527 回答
2

您不能在 select 语句中使用列:

服用:

[dbo].[sqldata].[jun1]
  • dbo是模式
  • sqldata是桌子 - 这是您应该从中选择的地方
  • jun1我不知道这是什么。

尝试:

Select Declare @string nvarchar(20)
set @string=(select [Bill Period] from [dbo].[sqldata])
select substring (@string,1,3)

或更好地解释您的问题/架构。

于 2013-10-03T11:05:54.790 回答
1

它应该像

[sqldata].[dbo].[jun1]
^database ^Schema ^Tablename

写查询:

Declare @string nvarchar(20)
set @string=(select [Bill Period] from [sqldata].[dbo].[jun1])
select substring (@string,1,3)
于 2013-10-03T11:06:03.060 回答
1

请确保您使用正确的server_name.database_name.schema_name.object_name. 您不需要使用所有这些多部分标识符,但一般的想法是您应该查看正确的位置。

此外,您应该在将其分配给变量之前选择 TOP 1 记录,否则一旦您在表中获得多个记录,它将中断

Declare @String nvarchar(20)

Select Top 1 @String = [Bill Period] 
From  jun1    -- on correct database 
Order by yourColumn

Select substring (@string,1,3)
于 2013-10-03T11:08:32.167 回答
0

您的查询中有问题。确保您以正确的方式调用它。

正如卢夫回答的那样——

[sqldata].[dbo].[jun1]
^database ^Schema ^Tablename

这是 SQL Server 支持的格式。

于 2013-10-03T11:16:43.920 回答