2010-10-19 42 views
7

Tôi có một bảng mysql lớn (được gọi là tcountriesnew) và một cột (được gọi là slogen, blob type). Trong mỗi một trong số các hình vuông đó, ví dụ: banana đến apple.Thay thế một từ trong văn bản BLOB bằng MySQL

Rất tiếc, tôi đã cố gắng in tất cả các hàng có từ chuối và nó không hoạt động.

select * from tcountriesnew where slogen like '%banana%';

Hãy giúp tôi.

  • Điều tôi đã bỏ lỡ, vấn đề với truy vấn của tôi là gì?
  • Làm cách nào để thay thế văn bản trong blob?

Trả lời

7

Phụ thuộc những gì bạn có nghĩa là bằng cách "thay thế" hiển thị trong chọn:

select replace(slogen, 'bananas', 'apples') from tcountriesnew where slogen like '%bananas%'; 

Hoặc cập nhật dữ liệu trong một bảng:

update tcountriesnew set slogen=replace(slogen, 'bananas', 'apples') where slogen like '%bananas%'; 

BTW. Tại sao bạn sử dụng blob cho văn bản? Bạn nên sử dụng loại text cho dữ liệu văn bản và blob cho dữ liệu nhị phân.

+1

Trong một số trường hợp cần lưu văn bản BLOB. Trong trường hợp của tôi, vì bất kỳ lý do gì mà các nhà phát triển Drupal 7 chọn sử dụng một blob cho tất cả các cột TEXT - thường thì điều này nằm ngoài tầm kiểm soát của nhà phát triển. – Druvision

+0

Nếu bạn muốn hỗ trợ mọi ngôn ngữ trên mạng thì có thể cần 'BLOB'. Có lẽ. Đối với hầu hết các ngôn ngữ 'TEXT' là tốt. Bạn mất rất nhiều chức năng khi sử dụng 'BLOB' như bản chất văn bản không được xem như là phía máy chủ văn bản. Đó là lý do tại sao tôi khuyên bạn nên sử dụng 'TEXT'. Nếu vẫn còn một số vấn đề với một số ngôn ngữ thì có thể chúng sẽ được sửa trong máy chủ MySQL. – Nux

+0

@Nux: Điều gì xảy ra nếu chỉ có một lần xuất hiện chuối cần được thay thế thay vì tất cả, hãy nói rằng nó nằm ở vị trí 2380. Làm thế nào để làm điều đó – Learner

0

Bạn đang sử dụng phiên bản nào? Có thể đó là lỗi này: . Nếu không, hãy thử cast cột blob của bạn.

1

Trong một số trường hợp, cần phải lưu văn bản BLOB. Trong trường hợp của tôi, vì bất kỳ lý do gì mà các nhà phát triển Drupal 7 chọn sử dụng một blob cho tất cả các cột TEXT - điều này nằm ngoài tầm kiểm soát của nhà phát triển.

Để chuyển đổi blob thành văn bản, hãy sử dụng hàm chuyển đổi MySql. Sau đó, bạn phải lưu nó vào cơ sở dữ liệu và chuyển đổi nó thành blob - nhưng điều này được xử lý tự động bởi MySQL. Vì vậy, truy vấn sau sẽ thực hiện thủ thuật:

UPDATE tcountriesnew 
SET slogen = replace(CONVERT(slogen USING utf8), 'bananas', 'apples') 
WHERE slogen LIKE '%bananas%'; 

Trên MySQL 5.5, Điều này đã giải quyết xong vấn đề của tôi.

Ngoài ra, configure your PhpMyAdmin to show Blob data

Các vấn đề liên quan