首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接字符串以指定字段名称

连接字符串以指定字段名称
EN

Stack Overflow用户
提问于 2011-08-12 05:09:50
回答 2查看 11.4K关注 0票数 4

使用MS SQL Server,但移植到MySQL上,所以我需要一个理想的解决方案(但最好是MySQL )

我正在尝试连接两个字段,以便为select语句指定字段名。

示例表:

代码语言:javascript
复制
id     | name
1      | John
2      | Bob


SELECT id, 'na'+'me' as value FROM table WHERE 1=1

实际回报(当然)

代码语言:javascript
复制
id     | value
1      | name
2      | name

预期收益:

代码语言:javascript
复制
id     | value
1      | John
2      | Bob

我不知道如何指定将连接结果用作字段名,而不是结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-12 05:12:34

我被你的问题搞糊涂了,但获取expected return所需的查询很简单:

代码语言:javascript
复制
SELECT id, name as value FROM Table

这在mySQL和SQL Server中都有效

更新:

我突然想到,您可能正在讨论使用连接的值来指定要选择的列。要在SQL Server中执行此操作,请使用动态SQL。示例:

代码语言:javascript
复制
EXEC('SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1')

如果这就是你实际打算使用它的方式,那么上面的说明就没有意义了。如果name是参数或其他东西,这将是有意义的。在SQL Server中使用动态SQL之前,请确保先阅读this article

MySQL版本:

代码语言:javascript
复制
mysql> set @sql_text := 'SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1';

mysql> prepare stmt from 
    -> @sql_text

mysql> EXECUTE stmt

here升级而来。

票数 3
EN

Stack Overflow用户

发布于 2011-08-12 05:24:12

听起来像是在尝试用SQL动态生成SQL?如果是,请使用您的SQL生成有效的SQL命令,然后对其使用EXEC命令。(MSDN documentation for T-SQL EXEC)

代码语言:javascript
复制
DECLARE @SQL varchar(max)
SET @SQL = 'SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1'
EXEC (@SQL);

如果您需要从数据生成,请执行以下操作:

代码语言:javascript
复制
DECLARE @SQL varchar(max)
SELECT @SQL = 'SELECT id, ' + field1 + field2 + ' as value FROM table WHERE 1=1' FROM sometable WHERE 1=1
EXEC (@SQL);

出于安全性考虑,通常不鼓励这样做。根据您获取数据以生成SQL的方式,它可能会允许SQL注入攻击。请谨慎使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7032873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档