Các ký tự cụ thể của MySQL TRIM

Trong bài đăng này, tôi sẽ trình bày các ví dụ về hàm MySQL TRIM(). TRIM() xóa các ký tự cụ thể – hoặc khoảng trắng – khỏi một chuỗi nhất định, tại một trong hai. bắt đầu, kết thúc hoặc có khả năng ở cả hai địa điểm tùy thuộc vào một số yếu tố. Với một đối số từ khóa tùy chọn kiểm soát (các) ký tự nào – nếu có – sẽ bị xóa, TRIM() có thể phức tạp, vì vậy hãy hiểu rõ hơn bằng một số ví dụ dễ hiểu…

Các ký tự cụ thể của MySQL TRIM
Các ký tự cụ thể của MySQL TRIM
Ảnh của Peter Beukema trên Bapt

Hệ điều hành, phần mềm và DB được sử dụng

  • OpenSuse Bước nhảy vọt 15. 1
  • mysql 8. 0. 20

Thúc đẩy

Nếu bạn thích nội dung được viết ở đây, bằng mọi cách, hãy chia sẻ blog này và (các) bài đăng yêu thích của bạn với những người khác, những người cũng có thể được hưởng lợi hoặc thích nội dung đó. Vì cà phê là thức uống yêu thích của tôi nên bạn thậm chí có thể mua cho tôi một ly nếu muốn.


TRIM() chấp nhận số không hoặc một trong các từ khóa bên dưới cùng với (các) ký tự cần xóa và chuỗi mục tiêu để xóa chúng

  • LEADING
  • TRAILING
  • BOTH

Tên từ khóa đã cho tương đối dễ hiểu và chỉ định một vị trí trong chuỗi đích nơi các ký tự bị xóa. Không nên chỉ định đối số nào trong số 3 đối số từ khóa dành riêng cho vị trí có sẵn – điều này hoàn toàn hợp lệ vì chúng là tùy chọn – TRIM() hoạt động như thể từ khóa BOTH đã được cung cấp

Từ khóa LEADING khiến (các) ký tự đích bị xóa khỏi đầu chuỗi đã cho

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(LEADING 'l' FROM 'level') AS trimming;
+---------+
| cắt xén .
+---------+
. cấp     .
+---------+
1 hàng trong . 0007 set (0.0007 giây )

Trong khi điều ngược lại là trường hợp của TRAILING, loại bỏ các ký tự ở cuối chuỗi

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(TRAILING 'l' FROM 'level') AS trimming;
+----------+
| cắt xén .
+-----------+
. mức       .
+-----------+
1 hàng . 0007 set (0.0007 giây )

Và, như bạn có thể phỏng đoán, BOTH chỉ vị trí bắt đầu và kết thúc để sửa đổi

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(BOTH 'l' FROM 'level') AS trimming;
+----------+
| cắt xén .
+-----------+
. đêm trước       .
+-----------+
1 hàng . 0006 set (0.0006 giây )

Trong truy vấn tiếp theo, vì từ 'cấp độ' bắt đầu và kết thúc bằng chữ 'l', nên TRIM() xóa cả hai ký tự 'l' ở mỗi đầu, hoạt động như thể bao gồm từ khóa BOTH. Một lần nữa, hành động mặc định nếu không có vị trí nào được đưa ra

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('l' FROM 'level') AS trimming;
+----------+
| cắt xén .
+-----------+
. đêm trước       .
+-----------+
1 hàng . 0006 set (0.0006 giây )

Hành vi tương tự cho từ 'lol'

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('l' FROM 'lol') AS trimming;
+----------+
| cắt xén .
+-----------+
. o         .
+-----------+
1 hàng . 0010 set (0.0010 giây )

Tuy nhiên, trường hợp (các) ký tự chuỗi loại bỏ mục tiêu là quan trọng (phân biệt chữ hoa chữ thường), như được hiển thị trong 2 truy vấn sau

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('l' FROM 'LOL') AS trimming;
+----------+
| cắt xén .
+-----------+
. LOL       .
+-----------+
1 hàng . 0007 set (0.0007 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('L' FROM 'lol') AS trimming;
+----------+
| cắt xén .
+-----------+
. lol       .
+-----------+
1 hàng . 0010 set (0.0010 giây )

Trong các truy vấn trước đó, không có ký tự nào bị xóa do trường hợp không khớp với bất kỳ ký tự nào được tìm thấy trong chuỗi 'LOL' và 'lol' tương ứng

TRIM() có thể xóa các ký tự nằm trong các đoạn khác ngoài vị trí đầu hoặc cuối của chuỗi không?

Không, TRIM() không hoạt động theo cách đó, như được hiển thị trong truy vấn sau

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('r' FROM 'umbrella') AS trimming;
+----------+
| cắt xén .
+-----------+
. ô .
+-----------+
1 hàng . 0005 set (0.0005 giây )

Đối với 2 truy vấn này, nếu cả LEADINGTRAILING đều không được chỉ định và nếu chữ cái đích - 'L' trong ví dụ này - nằm ở vị trí đầu hoặc vị trí kết thúc của chuỗi, thì TRIM() sẽ xóa nó

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('L' FROM 'Lol') AS trimming;
+----------+
| cắt xén .
+-----------+
. ol       .
+-----------+
1 hàng . 0007 set (0.0007 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('L' FROM 'loL') AS trimming;
+----------+
| cắt xén .
+-----------+
. lo       .
+-----------+
1 hàng . 0006 set (0.0006 giây )

Một lần nữa, hành vi mặc định từ TRIM()

TRIM() cũng chấp nhận các ký tự kép làm (các) phần loại bỏ mục tiêu, ở một mức độ nhất định. Xem các truy vấn ví dụ tiếp theo này để hiểu rõ hơn

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(TRAILING 'gg' FROM 'egg') AS trimming;
+----------+
| cắt xén .
+-----------+
. e         .
+-----------+
1 hàng . 0009 set (0.0009 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(TRAILING 'ee' FROM 'bee') AS trimming;
+----------+
| cắt xén .
+-----------+
. b         .
+-----------+
1 hàng . 0006 set (0.0006 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('ee' FROM 'bee') AS trimming;
+----------+
| cắt xén .
+-----------+
. b         .
+-----------+
1 hàng . 0006 set (0.0006 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('Aa' FROM 'Aabba') AS trimming;
+----------+
| cắt xén .
+-----------+
. bba       .
+-----------+
1 hàng . 0006 set (0.0006 giây )

Tuy nhiên, vị trí là chìa khóa để TRIM() loại bỏ các ký tự. Các ký tự phù hợp nằm ở bất kỳ đâu ngoài đầu hoặc cuối của chuỗi đích sẽ không bị xóa

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('ll' FROM 'parallel') AS trimming;
+----------+
| cắt xén .
+-----------+
. song song .
+-----------+
1 hàng . 0006 set (0.0006 giây )

Chuỗi ký tự loại bỏ là tùy chọn. Nếu không được bao gồm trong cuộc gọi đến TRIM(), khoảng trắng (nếu có) sẽ bị xóa

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('   Josh') AS trimming;
+----------+
| cắt xén .
+----------+
. Josh     .
+-----------+
1 hàng . 0007 set (0.0007 giây )

Phần lớn hành vi của TRIM() phụ thuộc vào những từ và chuỗi mục tiêu để xóa được đưa ra, cùng với bất kỳ đối số từ khóa vị trí nào

TRIM() cũng có thể dễ dàng xóa nhiều ký tự khỏi các từ mục tiêu như trong các ví dụ tiếp theo này

1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM('bee' FROM 'bumblebee') AS trimming;
+----------+
| cắt xén .
+-----------+
. ầm ầm   .
+-----------+
1 hàng . 0008 set (0.0008 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(BOTH 'bee' FROM 'bumblebee') AS trimming;
+----------+
| cắt xén .
+-----------+
. ầm ầm   .
+-----------+
1 hàng . 0381 set (0.0381 giây )


1
2
3
4
5
6
7

 MySQL  máy chủ cục bộ. 33060+ ssl  học SQL . SELECT TRIM(TRAILING 'bee' FROM 'bumblebee') AS trimming;
+----------+
| cắt xén .
+-----------+
. ầm ầm   .
+-----------+
1 hàng . 0007 set (0.0007 giây )

Truy cập tài liệu chính thức về TRIM() để biết thêm thông tin

Mặc dù tôi không phải sử dụng TRIM() nhiều như vậy trong tự nhiên, nhưng tôi muốn đăng phần này trong trường hợp những người đọc khác và các nhà phát triển MySQL/PHP quan tâm đến việc tìm hiểu thêm về nó

Giống như những gì bạn đã đọc?

Lời kêu gọi hành động

Cảm ơn bạn đã dành thời gian để đọc bài viết này. Tôi thực sự hy vọng bạn đã khám phá ra điều gì đó thú vị và khai sáng. Vui lòng chia sẻ những phát hiện của bạn ở đây, với người khác mà bạn biết, người cũng sẽ nhận được giá trị tương tự từ nó

Truy cập trang Danh mục đầu tư-Dự án để xem bài đăng trên blog/bài viết kỹ thuật mà tôi đã hoàn thành cho khách hàng.

Tôi đã đề cập đến việc tôi yêu một tách cà phê đến mức nào chưa?. ?

Để nhận thông báo qua email (Không bao giờ là thư rác) từ blog này (“Văn xuôi của cú kỹ thuật số”) cho các bài đăng blog mới nhất khi chúng được xuất bản, vui lòng đăng ký (theo ý muốn của bạn) bằng cách nhấp vào nút 'Nhấp để đăng ký'. ’ trong thanh bên trên trang chủ. (Vui lòng xem lại Trang chính sách bảo mật văn xuôi của Digital Owl bất cứ lúc nào để biết bất kỳ câu hỏi nào bạn có thể có về. cập nhật email, chọn tham gia, từ chối, biểu mẫu liên hệ, v.v.)

Hãy chắc chắn và truy cập trang “Hay nhất” để có bộ sưu tập các bài đăng blog hay nhất của tôi.


Josh Otwell có niềm đam mê học tập và phát triển với tư cách là Nhà phát triển SQL và người viết blog. Các hoạt động yêu thích khác khiến anh ta chúi mũi vào một cuốn sách hay, một bài báo hoặc dòng lệnh Linux. Trong số đó, anh ấy chia sẻ niềm yêu thích với các trò chơi RPG trên máy tính bảng, đọc tiểu thuyết giả tưởng và dành thời gian cho vợ và hai con gái.

từ chối trách nhiệm. Các ví dụ được trình bày trong bài đăng này là những ý tưởng giả định về cách đạt được các loại kết quả tương tự. Chúng không phải là (các) giải pháp tối ưu nhất. Phần lớn, nếu không phải tất cả, các ví dụ được cung cấp, được thực hiện trên môi trường máy trạm học tập/phát triển cá nhân và không nên được coi là chất lượng sản xuất hoặc sẵn sàng. Mục tiêu và nhu cầu cụ thể của bạn có thể thay đổi. Sử dụng những phương pháp có lợi nhất cho nhu cầu và mục tiêu của bạn. Ý kiến ​​​​là của riêng tôi

Làm cách nào để xóa ký tự cụ thể khỏi chuỗi trong MySQL?

Xóa các ký tự khỏi chuỗi bằng TRIM() .

Làm cách nào để TRIM 2 ký tự cuối cùng trong MySQL?

Bạn có thể sử dụng LENGTH(that_string) trừ đi số ký tự bạn muốn xóa trong SUBSTRING() chọn có lẽ hoặc sử dụng hàm TRIM(). If you can show an example of TRIM() working for all characters by index instead of removing all of a certain type of characters I'd be interested to see it.

Làm cách nào để xóa các ký tự đặc biệt khỏi cơ sở dữ liệu MySQL?

Bạn có thể xóa các ký tự đặc biệt khỏi trường cơ sở dữ liệu bằng hàm REPLACE() .

Làm cách nào để lấy 3 ký tự cuối cùng từ một chuỗi trong MySQL?

CHỌN *TỪ ĐẶT HÀNG TỪ yourTableName THEO QUYỀN(yourColumnName,3) yourSortingOrder ; .