comment éviter les espaces vides lors de l'utilisation du champ char dans sql
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).
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