从user_master中选择不同的u.id,u.first_name +''+ u.last_name,u.company_name给出错误的结果

时间:2014-12-11 12:05:46

标签: java mysql sql-server

我的应用程序正在研究java + MSSQL和MySQL.below查询适用于MSSQL但不适用于MySql。 在mysql中,当我写下如下查询时,它给出了错误的结果

查询

select distinct u.id, u.first_name + ' ' + u.last_name as 'FullName', u.company_name  from user_master u 

它给我下面的结果

结果

id  FullName company_name
1   0        abc
2   0        comp2

预期结果

id  FullName      company_name
1   shah priya    abc
2   xyz test      comp2

任何人都可以帮助我做到这一点

如果我写下面的查询,那么它的工作正常

select distinct u.id, concat(u.first_name,' ',u.last_name) as 'FullName', u.company_name 

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:0)

您不应使用+运算符进行连接。相反,你应该使用concat函数。
+表示此处的添加。
this

答案 1 :(得分:0)

由于您已为SQL Server添加了标记,以下内容将为您提供帮助

你的桌子

SELECT 'PRIYA' FNAME, 'RAMAN' LNAME
INTO #TEMP

enter image description here

您的结果

SELECT *,FNAME + ' ' + LNAME AS FULLNAME 
FROM #TEMP

enter image description here

这是小提琴http://sqlfiddle.com/#!3/85020/1(如果加载按RUNSQL会出现任何错误)

答案 2 :(得分:0)

我建议继续使用concat()表示法,如果你只是想让它在MySQL中运行,那就更清楚恕我直言了。

如果需要查询之间的兼容性,也许您应该使用像HQL这样的高级查询语言,那么让MSSQL和MYSQL驱动程序将其转换为特定的sql习惯用法。请参阅documentation of Hibernate

答案 3 :(得分:0)

选择不同的u.id,CONCAT_WS('',u.first_name,u.last_name)作为FullName,u.company_name来自user_master u

CONCAT& CONCAT_WS是mysql中内置的字符串函数