Hướng dẫn mysql like query with spaces - mysql như truy vấn với khoảng trắng
Tôi có một cơ sở dữ liệu MySQL có mã bưu điện trong đó, đôi khi trong cơ sở dữ liệu có các không gian trong mã bưu điện (ví dụ: Ng1 1AB) Đôi khi không có (ví dụ: NG11AB). Simlarly trong truy vấn PHP để đọc từ cơ sở dữ liệu mà người tìm kiếm cơ sở dữ liệu có thể thêm không gian hoặc không. Tôi đã thử các định dạng khác nhau bằng cách sử dụng giống như nhưng dường như không thể tìm thấy một phương tiện tìm kiếm hiệu quả để kết thúc nó sẽ đưa ra cùng một hàng tương ứng (ví dụ: tìm kiếm NG11AB hoặc NG1 1AB để đưa ra 'Bob Smith' ' hoặc bất kể trường hàng tương ứng sẽ là gì). Show Bất kỳ đề xuất? Hỏi ngày 30 tháng 8 năm 2013 lúc 8:52Aug 30, 2013 at 8:52
1 Tôi thậm chí sẽ không bận tâm với
Lưu ý rằng tôi cũng chuyển đổi cả hai giá trị thành chữ thường để vẫn khớp chính xác nếu người dùng nhập mã POST chữ thường. Đã trả lời ngày 30 tháng 8 năm 2013 lúc 8:57Aug 30, 2013 at 8:57
Aleks Galeks gAleks G 55.4K27 Huy hiệu vàng163 Huy hiệu bạc257 Huy hiệu Đồng27 gold badges163 silver badges257 bronze badges 6
Đảm bảo đầu vào PHP của bạn cũng được cắt Đã trả lời ngày 30 tháng 8 năm 2013 lúc 8:56Aug 30, 2013 at 8:56
AnonymooseanonymouseAnonymoose 2.3496 Huy hiệu vàng35 Huy hiệu bạc68 Huy hiệu Đồng6 gold badges35 silver badges68 bronze badges 1 Giả sử cột của bạn không chỉ là mã bưu điện trong đó: Xóa tất cả các khoảng trống trước khi thực hiện kiểm tra tương tự:
Nếu các cột của bạn chỉ có mã bưu điện trong đó:
hoặc
Regex sẽ làm việc cho cả hai trường hợp. Regex sau đây cho phép các không gian tùy chọn giữa mỗi chữ cái:
Đã trả lời ngày 30 tháng 8 năm 2013 lúc 8:56Aug 30, 2013 at 8:56
Anonymooseanonymouse♦Bohemian 2.3496 Huy hiệu vàng35 Huy hiệu bạc68 Huy hiệu Đồng89 gold badges565 silver badges702 bronze badges Bạn đã bao giờ viết một tìm kiếm cho MySQL và gặp vấn đề trong đó tìm kiếm sẽ xử lý không gian đúng cách chưa? Tôi đã viết một tìm kiếm cho một bảng Tôi bắt đầu với một truy vấn như thế này:
Dưới đây là danh sách cho các trận đấu, cho rằng có một người dùng với 0 của James James và 1 của Hồi Doyle,:
Vấn đề xuất hiện khi bạn thêm không gian vào truy vấn tìm kiếm. Tôi đã không muốn chia từ này thành một mảng và thực hiện tìm kiếm cho từng từ. Điều đó sẽ yêu cầu truy vấn cơ sở dữ liệu nhiều lần. Và tôi không muốn cố gắng thực hiện 2 và tất cả các bản hack chuỗi này để có được điều này để phù hợp chính xác hơn.Chà, tôi đã tìm thấy thủ thuật này, nơi bạn có thể tạo các cột giả bằng cách sử dụng 3 và sau đó thay thế bất kỳ ký tự không gian nào bằng 4.Vì vậy, nếu tôi hỏi như thế này: 5, điều đó thực sự sẽ trở thành 6 khi nó đến SQL thực tế nơi truy vấn.Điều này cho phép bạn có được một kết hợp tốt hơn thường xuyên hơn nếu người dùng gõ nhiều nội dung hơn trong một truy vấn có không gian.
Dưới đây là danh sách các thuật ngữ sẽ được khớp trong truy vấn này:
Vấn đề xuất hiện khi bạn thêm không gian vào truy vấn tìm kiếm. Tôi đã không muốn chia từ này thành một mảng và thực hiện tìm kiếm cho từng từ. Điều đó sẽ yêu cầu truy vấn cơ sở dữ liệu nhiều lần. Và tôi không muốn cố gắng thực hiện SELECT *
FROM MYTABLE
WHERE REPLACE(MYTABLE.POSTCODE, ' ', '') LIKE '%input%'
|