注册 登录
编程论坛 SQL Server论坛

[求助]关于SQL中列名(字段名)如何传递的问题

木木秋 发布于 2007-01-16 09:41, 956 次点击
各位大虾:
小弟初学SQL,有一事不明.对于DBMS来说,我们打入的列名(字段名),它是如何识别的呢?
比如:
SELECT max_lvl
FROM jobs
GEOUP BY max_lvl

这里的 max_lvl 是列的名称,系统在处理查询时是怎么确定你要查询的列是 max_lvl 呢?是通过对所查询表的列的所有名称进行字符串比较吗?

我想在 ESQL-C 中向 SELECT或GROUP BY 语句处传递变量该怎么做?
比如:
想用SELECT语句选择经标准输入得到的列名。(我键入了一个列名,作为参数传递给SELECT语句,查询我想查询的列)

不胜感谢!
7 回复
#2
yelang72007-01-16 10:19

没有搞明白的问题,楼主你真是专的够深的呀,建议你先去看看SQL Server的运行机制的咯,找版主来解决下的呢?

#3
木木秋2007-01-16 10:31

希望斑竹能给咱们解决一下!

#4
Kendy1234562007-01-16 11:00

1.你选择一个列去group by他干什么? 如果是要去掉重复行用select distinct就好了
2.SQL是对表的字段名字做字符串比较来确定你是要选择哪些列的
3.给你一个示例

create proc pr_SelectExample
(
@FieldName varchar(20)
)

as

declare @SqlString varchar(100)
set @SqlString = 'Select '+@FieldName + 'from jobs '
exec (@SqlString)

GO

exec pr_SelectExample 'max_lvl'

#5
木木秋2007-01-16 11:24

楼上的大哥谢谢你,不过我希望知道的是在嵌入式SQL语言中,如何把宿主语言C语言中的变量作为字段名传递给SQL。比如说我定义了一个字符串 char c[]={"max_lvl"};如何把这个c作为SELECET语句的参数,SELECT c 肯定是不行了,用宏定义#define A max_lvl ,SELECT A 是可以的,但是宏不能作为变量使用,请教还有没有什么办法,谢谢!

#6
Kendy1234562007-01-16 12:06
不明白了
c中难道不能带参数调用存储过程?只不过是把字符串赋给sqlcommand的参数
#7
木木秋2007-01-16 15:03

那让我试试看,不过我对SQL的存储过程不太了解.你在4楼写的程序我看了,是标准SQL吗?请麻烦你写一下原形好吗?谢谢你!

#8
bygg2007-01-16 17:53
以下是引用木木秋在2007-1-16 9:41:55的发言:
各位大虾:
小弟初学SQL,有一事不明.对于DBMS来说,我们打入的列名(字段名),它是如何识别的呢?
比如:
SELECT max_lvl
FROM jobs
GEOUP BY max_lvl

这里的 max_lvl 是列的名称,系统在处理查询时是怎么确定你要查询的列是 max_lvl 呢?是通过对所查询表的列的所有名称进行字符串比较吗?

我想在 ESQL-C 中向 SELECT或GROUP BY 语句处传递变量该怎么做?
比如:
想用SELECT语句选择经标准输入得到的列名。(我键入了一个列名,作为参数传递给SELECT语句,查询我想查询的列)

不胜感谢!

我觉得你有必要去问一下开发数据库的那个集团,呵

1