comment éviter les espaces vides lors de l'utilisation du champ char dans sql


Anton Makov

J'ai deux tables, l'une est une table client et la seconde est une table de vente. Je dois créer une requête pour afficher le nom du client, le customer_id et le nombre de gadgets achetés (écrivez deux requêtes en utilisant des syntaxes différentes de JOIN). Exemple: «John Barry - 111 ont acheté 5 gadgets».

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) 
);

J'ai fait cette requête

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

mais il y a trop d'espace entre le nom et le «-». J'ai essayé de changer le champ de nom en varchar et cela a fonctionné comme il était censé fonctionner, mais j'en ai également besoin pour fonctionner avec char (50).trop d'espace

scaisEdge

si vous devez utiliser char et non varchar mais avez besoin d'un résultat coupé dans votre sélection, vous pouvez couper (ou rtrim ou ltrim) votre custname pour supprimer les espaces

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

Articles connexes