Làm cách nào để bỏ qua một trích dẫn trong mysql?

SQL Escape trích dẫn đơn đề cập đến một kỹ thuật làm xáo trộn các ký tự trích dẫn đơn trong câu lệnh SQL

SQL sử dụng các ký tự trích dẫn đơn để biểu thị một chuỗi. Do đó, nếu chuỗi chuỗi của bạn bao gồm các dấu nháy đơn như một phần của chuỗi, bạn sẽ cần phải thoát chuỗi đó

Nếu không thoát đúng ký tự trích dẫn đơn, câu lệnh SQL của bạn sẽ không thành công và trả về lỗi

Bài viết này sẽ khám phá các kỹ thuật khác nhau để thoát dấu ngoặc đơn đúng cách trong câu lệnh SQL

Sử dụng dấu gạch chéo ngược để SQL thoát khỏi trích dẫn đơn

Một cách phổ biến để SQL thoát khỏi trích dẫn đơn là sử dụng ký tự dấu gạch chéo ngược. Bất cứ khi nào bạn bắt gặp một trích dẫn trong câu lệnh SQL của mình, hãy đặt dấu gạch chéo ngược trước nó. Dấu gạch chéo ngược sẽ yêu cầu trình thông dịch SQL coi trích dẫn đơn là một ký tự thông thường, không phải là một phần của cú pháp SQL

Thí dụ

Nếu chúng ta có một giá trị văn bản với dấu nháy đơn, tôi. e. ,

'Mike's House'
Returns Error

Chúng tôi sẽ SQL thoát khỏi trích dẫn đơn như thế này

'Mike\'s House'

Phương pháp này được hỗ trợ trong cơ sở dữ liệu MySQLPostgreSQL

Sử dụng dấu ngoặc kép để SQL thoát dấu nháy đơn

Một cách khác để SQL thoát khỏi trích dẫn đơn là sử dụng dấu ngoặc kép xung quanh toàn bộ giá trị văn bản. Nó yêu cầu trình thông dịch SQL coi toàn bộ giá trị văn bản dưới dạng một chuỗi, bất kể có bất kỳ trích dẫn nào trong đó. Vì vậy, ví dụ: nếu chúng ta có một giá trị văn bản có dấu nháy đơn, thì SQL sẽ thoát khỏi trích dẫn đơn như thế này

"Mike's House"

Sử dụng hai dấu nháy đơn để SQL thoát dấu nháy đơn

Bạn có thể sử dụng hai dấu nháy đơn liên tiếp thay cho dấu nháy đơn

'Mike''s House'

Kỹ thuật này được hỗ trợ trong các công cụ cơ sở dữ liệu Oracle,

Returns Error
0, MySQLPostgreSQL

Sử dụng hàm char(39) để SQL thoát khỏi trích dẫn đơn

Một cách khác để SQL thoát khỏi trích dẫn đơn là sử dụng nối

'Mike' + char(39) + 's House'

Ở đây, chúng tôi đang sử dụng hàm char(39) để trả về một ký tự từ mã ASCII đã chỉ định, là một trích dẫn đơn. Do đó, kỹ thuật này hoạt động tương tự như kỹ thuật trước, trong đó dấu nháy đơn sau trong hai dấu nháy đơn liên tiếp được thay thế bằng hàm char(39)

Sử dụng kỹ thuật này với các máy chủ SQL và Oracle

Sử dụng trích dẫn theo nghĩa đen của Oracle để thoát khỏi SQL trích dẫn đơn

Bạn cũng có thể sử dụng trích dẫn theo nghĩa đen của Oracle để trích dẫn thoát SQL. Nó cho phép bạn có đầu ra xuất hiện chính xác như đầu vào

q'[Mike's House]'

Phần kết luận

Như bạn có thể thấy, bằng cách SQL thoát khỏi các dấu nháy đơn, bạn đảm bảo rằng câu lệnh SQL của mình chạy không có lỗi. Bạn có thể sử dụng các cách khác nhau để SQL thoát khỏi dấu nháy đơn trong câu lệnh SQL. Tùy thuộc vào nhu cầu của bạn, một phương pháp có thể phù hợp hơn phương pháp khác. Trong mọi trường hợp, điều cần thiết là SQL luôn thoát khỏi trích dẫn đơn

Máy chủ MySQL thực sự có hai tùy chọn để thoát khỏi trích dẫn đơn. Bạn có thể thay thế dấu nháy đơn thành dấu nháy đơn kép như (”) và cách khác là bạn có thể sử dụng (\’) để thoát dấu nháy đơn

Đầu tiên, tạo một bảng mẫu

1

2

3

4

5

TẠO BẢNG tbl_SingleQuoted

(

số nguyên ID

,Văn bảnDữ liệu VĂN BẢN

);

Chèn một số dữ liệu mẫu bằng một trích dẫn bằng cả (”) và (\’)

1

2

3

4

5

CHÈN VÀO tbl_SingleQuoted

GIÁ TRỊ

(1,'Anvesh\'s dbrnd. com')

,(2,'Thuộc tính của Cơ sở dữ liệu')

,(3,'Nhận xét của blog dbrnd');

Để CHỌN tất cả dữ liệu có ( ‘s )

1

2

3

LỰA CHỌN *

TỪ tbl_SingleTrích dẫn

WHERE TextData THÍCH '%\'s%';

Kết quả

Làm cách nào để bỏ qua một trích dẫn trong mysql?

Ngày 31 tháng 7 năm 2016 Anvesh Patel

Mời bạn tham khảo các bài viết liên quan khác

  • Cách lưu trữ và truy xuất dữ liệu XML vào MySQL
  • mysql. Tại sao InnoDB Engine lưu trữ tất cả cơ sở dữ liệu trong một tệp (ibdata1)?
  • Câu lệnh Insert-Update, Merge trong MySQL
  • mysql. Chức năng phân tách giá trị chuỗi bằng cách sử dụng các dấu phân cách và vị trí khác nhau
  • mysql. Chuỗi tìm kiếm bằng Biểu thức chính quy (REGEXP)
  • mysql. UDF để xóa Thẻ HTML khỏi Dữ liệu chuỗi
  • mysql. Tạo FEDERATED Table để CHỌN dữ liệu từ server khác (Phần 3/4)
  • Tìm bất kỳ văn bản nào trong Thủ tục lưu trữ và Chức năng của MySQL

mysql. Sử dụng SQL Query Profiler để tìm tổng thời gian thực hiện và thông tin CPU của QueriesPostgreSQL 9. 5. Bảo mật cấp hàng theo ví dụ

Bạn có cần thoát các ký tự đặc biệt hoặc thoát một trích dẫn trong SQL không?

Mục lục

Trốn thoát là gì?

Khi bạn đang làm việc với các giá trị văn bản trong SQL, bạn sử dụng các ký tự trích dẫn đơn

Đây có thể là khi bạn đang chọn chúng

________số 8_______

Hoặc, khi bạn đang chèn chúng

INSERT INTO customer (id, customer_name)
VALUES (45, 'ABC Company');

Ký tự trích dẫn đơn cho biết vị trí bắt đầu và kết thúc chuỗi của bạn

Nhưng nếu bạn muốn có một trích dẫn như một phần của chuỗi thì sao?

Ví dụ

SELECT 'O'Reilly';

Điều này sẽ gây ra sự cố vì có ba dấu nháy đơn. Cơ sở dữ liệu không biết chuỗi của bạn sẽ kết thúc ở đâu

Vì vậy, để cho phép các giá trị trong dấu ngoặc đơn (và một số ký tự đặc biệt khác) được sử dụng trong một chuỗi, bạn cần “thoát” chúng

Thoát một ký tự là nơi bạn nói với cơ sở dữ liệu, “Này, ký tự này ở đây là một phần trong chuỗi của tôi, đừng coi nó là một ký tự đặc biệt như bạn thường làm”

Có một số phương thức trích dẫn đơn thoát SQL mà tôi sẽ trình bày trong bài viết này

 

Sử dụng hai trích dẫn đơn cho mỗi trích dẫn để hiển thị

nhà cung cấp. Oracle, Máy chủ SQL, MySQL, PostgreSQL

Phương pháp đơn giản nhất để thoát dấu nháy đơn trong SQL là sử dụng hai dấu nháy đơn. Ví dụ: nếu bạn muốn hiển thị giá trị O'Reilly, bạn sẽ sử dụng hai dấu ngoặc kép ở giữa thay vì một

Trích dẫn đơn là ký tự thoát trong Oracle, SQL Server, MySQL và PostgreSQL

SELECT 'O''Reilly' AS quoted_string;
QUOTED_STRINGO'Reilly

Nếu bạn muốn sử dụng nhiều hơn một trong một chuỗi, bạn có thể

SELECT 'Let''s go to that ''place''' AS quoted_string;
QUOTED_STRINGHãy đến 'nơi' đó

 

Sử dụng dấu gạch chéo ngược trước trích dẫn

nhà cung cấp. Mysql, PostgreSQL

Trong MySQL, bạn có thể thêm dấu gạch chéo ngược trước câu trích dẫn để thoát nó

Ví dụ

SELECT 'O\'Reilly' AS quoted_string;
QUOTED_STRINGO'Reilly

 

 

Sử dụng trích dẫn theo nghĩa đen

nhà cung cấp. tiên tri

Một phương thức trích dẫn đơn thoát SQL khác mà bạn có thể sử dụng trong Oracle là “trích dẫn theo nghĩa đen”

Điều này có nghĩa là bạn có thể đặt chữ “q” ở phía trước, theo sau là ký tự thoát, sau đó là dấu ngoặc vuông

Ví dụ

SELECT q'[O'Reilly]' AS quoted_string
FROM dual;
QUOTED_STRINGO'Reilly

Điều này có nghĩa là bất kỳ trích dẫn nào bên trong dấu ngoặc vuông đều không thoát. Chuỗi đầu ra xuất hiện chính xác như bạn đã nhập

Một vi dụ khac

SELECT q'[The 'end' of the day]' AS quoted_string
FROM dual;
QUOTED_STRING'Kết thúc' trong ngày

Bạn vẫn có thể làm điều này với nhiều dấu ngoặc đơn

SELECT q'[This is an ''example'' of two single quotes]' AS quoted_string
FROM dual;
QUOTED_STRINGĐây là "ví dụ" về hai dấu nháy đơn

 

Sử dụng chức năng CHR

nhà cung cấp. Máy chủ Oracle, SQL

Một phương pháp khác là sử dụng chức năng CHR

Hàm CHR trả về một ký tự từ mã ASCII đã chỉ định

CHR(39) trả về một trích dẫn duy nhất, có thể được nối với chuỗi của bạn

Ví dụ

SELECT 'O' || CHR(39) || 'Reilly' AS quoted_string;
QUOTED_STRINGO'Reilly

Bạn cũng có thể sử dụng cái này ở nhiều nơi

INSERT INTO customer (id, customer_name)
VALUES (45, 'ABC Company');
0QUOTED_STRING'kết thúc' trong ngày

 

Thoát ký tự đại diện SQL

nhà cung cấp. tiên tri

Khi bạn đang sử dụng từ khóa THÍCH, bạn cung cấp các ký tự đại diện

Biểu tượng % đại diện cho 0 hoặc nhiều ký tự và ký hiệu _ đại diện cho một ký tự

Nếu bạn muốn những ký tự đó là một phần của chuỗi chứ không phải ký tự đại diện thì sao?

Bạn có thể làm điều đó như một phần của từ khóa THÍCH, bằng cách chỉ định từ khóa ESCAPE

INSERT INTO customer (id, customer_name)
VALUES (45, 'ABC Company');
1

Truy vấn này tìm kiếm tất cả các giá trị customer_name chứa dấu gạch dưới

Thông thường, dấu gạch dưới biểu thị một ký tự đại diện một ký tự, nhưng tôi đã chỉ định từ khóa ESCAPE '\' tại đây. Điều này có nghĩa là ký tự \ được sử dụng làm ký tự thoát, buộc ký tự _ phải được sử dụng theo nghĩa đen chứ không phải ký tự đại diện

Chúng tôi có thể chỉ định một ký tự thoát khác nếu cần

INSERT INTO customer (id, customer_name)
VALUES (45, 'ABC Company');
2

Điều này thực hiện cùng một truy vấn, chỉ sử dụng một ký tự thoát khác

Chúng ta cũng có thể thoát khỏi ký hiệu %

INSERT INTO customer (id, customer_name)
VALUES (45, 'ABC Company');
3

Truy vấn này tìm tất cả các giá trị customer_name bắt đầu bằng ký hiệu %

 

Vì vậy, đó là cách bạn có thể thoát khỏi dấu nháy đơn trong SQL. Có một vài phương pháp, vì vậy bạn có thể sử dụng bất kỳ phương pháp nào bạn thích