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

时间:2018-03-25 12:16:33

标签: mysql sql concat

我有两个表,一个是customer表,第二个是sales表。 我需要创建一个查询来显示客户名称,customer_id和购买的小工具数量(使用不同的JOIN语法编写两个查询)。示例:“John Barry - 111买了5个小工具”。

CUSTOMERS_JS

create table CUSTOMERS_JS ( 
CUSTID smallint not null,
CUSTNAME char(50) not null,
primary key(CUSTID)
);

STORE_SALES_JS

create table STORE_SALES_JS ( 
SALEID smallint not null,
SALETS datetime not null,
GADGETID smallint not null,
EMPID smallint not null,
CUSTID smallint not null,
primary key(SALEID),
foreign key(GADGETID) references ELEC_items_JS(GADGETID),
foreign key(EMPID) references Store_EMPS_JS(EMPID),
foreign key(CUSTID) references CUSTOMERS_JS(CUSTID) 
);

我做了这个查询

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,它可以正常工作但我需要它也可以使用char(50)。too much space

2 个答案:

答案 0 :(得分:0)

感谢scaisEdge帮助,我设法在使用rtrim函数时解决了这个问题

NetworkBoundResource

problem solved

答案 1 :(得分:-1)

如果你必须使用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