อัปเดตค่าทั้งหมดของคอลัมน์เป็นตัวพิมพ์เล็ก


101

มาบอกว่าฉันมีอะไรแบบนี้

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

ฉันจะอัปเดตค่าทั้งหมดในคอลัมน์ "แท็ก" เป็น:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

ใช้ MySQL?

คำตอบ:


244

3
หมายเหตุสิ่งนี้ใช้ไม่ได้เมื่อฐานข้อมูลของคุณใช้การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
มรกต

วิธีนี้จะทำงานร่วมกับที่อยู่อีเมลได้อย่างไร Name@domain.com @ จะเปลี่ยนหรือไม่
Björn C

2
UPDATE table_name SET tag = BINARY LOWER(tag)สำหรับการจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
Enyby

2
@ BjörnC - บน / ล่างเปลี่ยนตัวอักษรเท่านั้น อักขระอื่น ๆ ทั้งหมดไม่เปลี่ยนแปลง
ToolmakerSteve

@Rippo ฉันได้รับข้อผิดพลาดนี้เมื่อฉันลองใช้แบบสอบถามนี้HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Luna Lovegood

68

ล่าง ()

update table set tag = LOWER(tag)

ฉันได้รับข้อผิดพลาดนี้เมื่อลองค้นหาคำแนะนำนี้: ไม่มีฟังก์ชันที่ตรงกับชื่อและประเภทอาร์กิวเมนต์ที่กำหนด คุณอาจต้องเพิ่มการแคสประเภทที่ชัดเจน
Luna Lovegood

4

เวอร์ชันสำหรับการจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่และรวมอนุประโยค "WHERE" หากคุณไม่ต้องการอัปเดตทั้งคอลัมน์:

UPDATE table 
SET tag = LOWER(tag)
WHERE LOWER(tag) != tag
COLLATE Latin1_General_CS_AS

บรรทัด COLLATE จะทำให้ใช้งานได้หากฐานข้อมูลของคุณใช้การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่เหมือนที่ฉันทำ


ฉันได้รับข้อผิดพลาดนี้เมื่อลองค้นหาคำแนะนำนี้: ไม่มีฟังก์ชันที่ตรงกับชื่อและประเภทอาร์กิวเมนต์ที่กำหนด คุณอาจต้องเพิ่มการแคสประเภทที่ชัดเจน
Luna Lovegood

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.