Mysql 在sql中使用字符字段时如何避免空格

Mysql 在sql中使用字符字段时如何避免空格,mysql,sql,concat,Mysql,Sql,Concat,我有两张表,一张是客户表,另一张是销售表。 我需要创建一个查询来显示客户名称、客户id和购买的小工具数量,并使用JOIN的不同语法编写两个查询。例如:“约翰·巴里-111买了5个小玩意” 顾客 商店销售部 我做了这个查询 select concat(CUSTNAME,' - ',STORE_SALES_JS.CUSTID,' bought ',count(STORE_SALES_JS.GADGETID),' gadgets') as result from CUSTOMERS_JS,STORE

我有两张表,一张是客户表,另一张是销售表。 我需要创建一个查询来显示客户名称、客户id和购买的小工具数量,并使用JOIN的不同语法编写两个查询。例如:“约翰·巴里-111买了5个小玩意”

顾客

商店销售部

我做了这个查询

select concat(CUSTNAME,' - ',STORE_SALES_JS.CUSTID,' bought ',count(STORE_SALES_JS.GADGETID),' gadgets') as result 
from CUSTOMERS_JS,STORE_SALES_JS
where STORE_SALES_JS.CUSTID = CUSTOMERS_JS.CUSTID
group by STORE_SALES_JS.CUSTID,CUSTNAME
order by STORE_SALES_JS.CUSTID

但是名称和“-”之间有太多的空格。我尝试将名称字段更改为varchar,它按预期工作,但我需要它也与char50一起工作。

如果必须使用char而不是varchar,但需要在选择中使用修剪结果,则可以修剪或rtrim或ltrim custname以删除空格

select concat(rtrim(CUSTNAME),' - '
  ,STORE_SALES_JS.CUSTID,' bought '
  ,count(STORE_SALES_JS.GADGETID),' gadgets') as result 
from CUSTOMERS_JS,STORE_SALES_JS
where STORE_SALES_JS.CUSTID = CUSTOMERS_JS.CUSTID
group by STORE_SALES_JS.CUSTID,CUSTNAME
order by STORE_SALES_JS.CUSTID

如果必须使用char而不是varchar,但在选择中需要修剪结果,则可以修剪custname或rtrim或ltrim以删除空格

select concat(rtrim(CUSTNAME),' - '
  ,STORE_SALES_JS.CUSTID,' bought '
  ,count(STORE_SALES_JS.GADGETID),' gadgets') as result 
from CUSTOMERS_JS,STORE_SALES_JS
where STORE_SALES_JS.CUSTID = CUSTOMERS_JS.CUSTID
group by STORE_SALES_JS.CUSTID,CUSTNAME
order by STORE_SALES_JS.CUSTID

多亏了scaisEdge的帮助,我在使用rtrim函数时解决了这个问题

select concat(rtrim(CUSTNAME),' - ',STORE_SALES_JS.CUSTID,' bought ',count(STORE_SALES_JS.GADGETID),' gadgets') as result 
from CUSTOMERS_JS,STORE_SALES_JS
where STORE_SALES_JS.CUSTID = CUSTOMERS_JS.CUSTID
group by STORE_SALES_JS.CUSTID,CUSTNAME
order by STORE_SALES_JS.CUSTID

多亏了scaisEdge的帮助,我在使用rtrim函数时解决了这个问题

select concat(rtrim(CUSTNAME),' - ',STORE_SALES_JS.CUSTID,' bought ',count(STORE_SALES_JS.GADGETID),' gadgets') as result 
from CUSTOMERS_JS,STORE_SALES_JS
where STORE_SALES_JS.CUSTID = CUSTOMERS_JS.CUSTID
group by STORE_SALES_JS.CUSTID,CUSTNAME
order by STORE_SALES_JS.CUSTID

我试图将name字段改为varchar,它按预期工作,但我也需要它与char50一起工作。-除了这是两种数据类型之间的区别:CHAR是固定宽度,而varchar是可变宽度。您需要可变宽度的行为,但坚持使用固定宽度的数据类型。。。为什么?TRIMCUSTNAME@eggyal这是我的老师的要求之一。我试图将名称字段改为varchar,它按预期工作,但我也需要它与char50一起工作。-除了这是两种数据类型之间的区别:CHAR是固定宽度,而varchar是可变宽度。您需要可变宽度的行为,但坚持使用固定宽度的数据类型。。。为什么?TRIMCUSTNAME@eggyal这是我老师的要求之一。我在使用trim时出错,“trim”不是可识别的内置函数名。您使用的是哪一个数据库我正在使用Microsoft sql Server谢谢您的帮助!,我很抱歉,我认为这个问题也存在于mysql中。。sql server中的修剪函数wrok to。。那么,您确定正在使用sqlserver吗?哪个版本?我在使用trim时出错,“trim”不是可识别的内置函数名。您正在使用哪个数据库我正在使用Microsoft sql Server谢谢您的帮助!,我很抱歉,我认为这个问题也存在于mysql中。。sql server中的修剪函数wrok to。。那么,您确定正在使用sqlserver吗?哪个版本?