2011-06-23 76 views
6

Tôi muốn thay đổi ký tự đầu tiên từ một 'U' để 'S' trong một lĩnh vực trong bảng của tôi (MYSQL), cho đến nay tôi có như sau:thay đổi ký tự đầu tiên trong một lĩnh vực

UPDATE customers_basket 
SET products_id = REPLACE(
        LEFT(products_id,1), 'U', 'S') +  
        SUBSTRING(products_id, 2, CHAR_LENGTH(products_id) 
); 

nhưng điều này không cho tôi hiệu quả mong muốn, bất kỳ ai có thể giúp tôi?

cảm ơn bạn!

+0

điều gì sẽ xảy ra? –

+0

mọi trường chỉ được thay thế bằng số 0, đó là ..... – seb

Trả lời

11
UPDATE customers_basket 
SET products_id = CONCAT(
        REPLACE(
         LEFT(products_id,1), 'U', 'S'),  
         SUBSTRING(products_id, 2, CHAR_LENGTH(products_id) 
)); 

Bạn đang cố gắng để thêm nhân vật với nhau, ví dụ

select 'c' + 'a'; 
+-----------+ 
| 'c' + 'a' | 
+-----------+ 
|   0 | 
+-----------+ 
+0

cảm ơn bạn đã giải thích lý do tại sao tôi luôn nhận được số không – seb

4
update customers_basket 
set products_id = 'S' + SUBSTRING(products_id,2,CHAR_LENGTH(products_id)) 
where LEFT(products_id,1) = 'U' 
0
update customers_basket 
set products_id = CONCAT('S', RIGHT(products_id,CHAR_LENGTH(products_id)-1)) 
WHERE LEFT(products_id,1) = 'U' 
1

Bạn chỉ có thể sử dụng:

UPDATE customers_basket SET products_id=CONCAT('S', SUBSTRING(products_id FROM 2)); 

ví dụ: Thay vì thay thế ban đầu "U" với chữ "S", chỉ cần bắt đầu với chữ "S" và sao chép các ký tự còn lại .

Điều này tất nhiên giả định rằng tất cả mục products_id bắt đầu bằng "U". Nếu họ không, chỉ cần thêm một WHERE điều kiện như:

UPDATE customers_basket SET products_id=CONCAT('S', SUBSTRING(products_id FROM 2)) 
WHERE LEFT(products_id, 1) = 'U'; 
0

SUBSTRING(products_id, 2) sẽ cung cấp cho bạn ký tự thứ hai trở đi. Vì vậy, bạn có thể làm điều gì đó như:

update customers_basket set products_id = concat('S', substring(products_id, 2)); 

Nếu bạn chỉ muốn thay đổi những người có ký tự đầu tiên là một 'U' chỉ cần thêm một mệnh đề where thích hợp, ví dụ

update customers_basket set products_id = concat('S', substring(products_id, 2)) where left(products_id,1)='U'; 
Các vấn đề liên quan