Hướng dẫn how do i add a special character to a mysql query? - làm cách nào để thêm một ký tự đặc biệt vào truy vấn mysql?

Hầu như tất cả các ký tự bạn liệt kê có thể được chèn trực tiếp vào trường text hoặc char mà không gặp vấn đề gì.

Tùy thuộc vào ký tự trích dẫn mà bạn sử dụng, bạn chỉ cần "thoát" cùng một ký tự, vì vậy khi sử dụng trích dẫn đơn ', bạn không phải thoát khỏi trích dẫn kép

'a string'
"another string"
0. Với trích dẫn, bạn có thể thoát khỏi nó bằng một dấu gạch chéo
'a string'
"another string"
1 hoặc tăng gấp đôi nhân vật
'a string'
"another string"
2.

Các nhân vật chém trở lại cũng cần phải được trốn thoát hoặc nhân đôi.

Dưới đây là một ví dụ về cách xử lý các ký tự khác nhau: https://www.db-fiddle.com/f/qiv1asqdrylzkue4hazwgu/1

create table accident_report (id integer, description text);

insert accident_report(id, description) values 
(1, '@#$%^&*()_+[{}]|:;"<>,.?/'),
(2, '\\'),
(3, '\''),
(4, '''');

select * from accident_report;

Điều thú vị là màu mã đánh dấu không hoàn toàn đúng với các ký tự được trích dẫn kép.

9.1.1 & nbsp; chuỗi chữ

Một chuỗi là một chuỗi các byte hoặc ký tự, được đặt trong các ký tự trích dẫn đơn (') hoặc kép (

'a string'
"another string"
0). Ví dụ:

'a string'
"another string"

Các chuỗi được trích dẫn được đặt cạnh nhau được nối với một chuỗi. Các dòng sau là tương đương:

'a string'
'a' ' ' 'string'

Nếu chế độ

'a string'
"another string"
5 SQL được bật, các chuỗi chữ chỉ có thể được trích dẫn trong các dấu ngoặc kép đơn vì một chuỗi được trích dẫn trong các dấu ngoặc kép được hiểu là một định danh.

Một chuỗi nhị phân là một chuỗi các byte. Mỗi chuỗi nhị phân có một bộ ký tự và đối chiếu có tên

'a string'
"another string"
6. Một chuỗi không phải là một chuỗi các ký tự. Nó có một bộ ký tự khác với
'a string'
"another string"
6 và một đối chiếu tương thích với bộ ký tự.binary string is a string of bytes. Every binary string has a character set and collation named
'a string'
"another string"
6. A nonbinary string is a string of characters. It has a character set other than
'a string'
"another string"
6 and a collation that is compatible with the character set.

Đối với cả hai loại chuỗi, so sánh dựa trên các giá trị số của đơn vị chuỗi. Đối với chuỗi nhị phân, đơn vị là byte; So sánh sử dụng các giá trị byte số. Đối với các chuỗi không phải là đơn vị là ký tự và một số bộ ký tự hỗ trợ các ký tự multibyte; So sánh sử dụng giá trị mã ký tự số. Đặt hàng mã ký tự là một chức năng của bộ đối chiếu chuỗi. .

Một chuỗi ký tự theo nghĩa đen có thể có một bộ giới thiệu bộ ký tự tùy chọn và mệnh đề

'a string'
"another string"
8, để chỉ định nó là một chuỗi sử dụng một bộ ký tự và đối chiếu cụ thể:

[_charset_name]'string' [COLLATE collation_name]

Ví dụ:

SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;

Bạn có thể sử dụng

'a string'
"another string"
9 '(hoặc
'a string'
'a' ' ' 'string'
0') để tạo một chuỗi trong bộ ký tự quốc gia. Những tuyên bố này tương đương:

SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';

Để biết thông tin về các dạng cú pháp chuỗi này, xem Phần & NBSP; 10.3.7, Bộ Nhân vật Quốc gia Set, và Phần & NBSP; 10.3.8, Bộ giới thiệu ký tự.

Trong một chuỗi, một số chuỗi nhất định có ý nghĩa đặc biệt trừ khi chế độ SQL

'a string'
'a' ' ' 'string'
1 được bật. Mỗi chuỗi này bắt đầu bằng một dấu gạch chéo ngược (
'a string'
"another string"
1), được gọi là nhân vật thoát. MySQL nhận ra các chuỗi thoát được hiển thị trong Bảng & NBSP; 9.1, Trình tự thoát ký tự đặc biệt. Đối với tất cả các chuỗi thoát khác, dấu gạch chéo ngược bị bỏ qua. Đó là, nhân vật trốn thoát được giải thích như thể nó không bị trốn thoát. Ví dụ,
'a string'
'a' ' ' 'string'
3 chỉ là
'a string'
'a' ' ' 'string'
4. Những chuỗi này là nhạy cảm trường hợp. Ví dụ,
'a string'
'a' ' ' 'string'
5 được hiểu là một backspace, nhưng
'a string'
'a' ' ' 'string'
6 được hiểu là
'a string'
'a' ' ' 'string'
7. Xử lý thoát được thực hiện theo bộ ký tự được chỉ định bởi biến hệ thống
'a string'
'a' ' ' 'string'
8. Điều này đúng ngay cả đối với các chuỗi được đặt trước bởi một người giới thiệu chỉ ra một bộ ký tự khác, như đã thảo luận trong Phần & NBSP; 10.3.6, bộ ký tự của ký tự ký tự và đối chiếu.escape character. MySQL recognizes the escape sequences shown in Table 9.1, “Special Character Escape Sequences”. For all other escape sequences, backslash is ignored. That is, the escaped character is interpreted as if it was not escaped. For example,
'a string'
'a' ' ' 'string'
3 is just
'a string'
'a' ' ' 'string'
4. These sequences are case-sensitive. For example,
'a string'
'a' ' ' 'string'
5 is interpreted as a backspace, but
'a string'
'a' ' ' 'string'
6 is interpreted as
'a string'
'a' ' ' 'string'
7. Escape processing is done according to the character set indicated by the
'a string'
'a' ' ' 'string'
8 system variable. This is true even for strings that are preceded by an introducer that indicates a different character set, as discussed in Section 10.3.6, “Character String Literal Character Set and Collation”.

Bảng & nbsp; 9.1 & nbsp; trình tự thoát ký tự đặc biệt

Trình tự thoátKý tự được thể hiện bằng trình tự
'a string'
'a' ' ' 'string'
9
Một nhân vật ASCII NUL (
[_charset_name]'string' [COLLATE collation_name]
0)
[_charset_name]'string' [COLLATE collation_name]
1
Một ký tự một trích dẫn (')
[_charset_name]'string' [COLLATE collation_name]
3
Một ký tự trích dẫn kép (____10)
'a string'
'a' ' ' 'string'
5
Một ký tự backspace
[_charset_name]'string' [COLLATE collation_name]
6
Một ký tự dòng mới (linefeed)
[_charset_name]'string' [COLLATE collation_name]
7
Một nhân vật trở lại vận chuyển
[_charset_name]'string' [COLLATE collation_name]
8
Một ký tự tab
[_charset_name]'string' [COLLATE collation_name]
9
ASCII 26 (Control+Z); Xem ghi chú theo bảng
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
0
Một ký tự Backslash (
'a string'
"another string"
1)
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
2
Một nhân vật
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
3; Xem ghi chú theo bảng
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
4
Một nhân vật
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
5; Xem ghi chú theo bảng

Ký tự ASCII 26 có thể được mã hóa dưới dạng

[_charset_name]'string' [COLLATE collation_name]
9 để cho phép bạn giải quyết vấn đề mà ASCII 26 là viết tắt của tệp cuối trên Windows. ASCII 26 trong một tệp gây ra sự cố nếu bạn cố gắng sử dụng
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
7 <
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
8.

Các chuỗi

SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
2 và
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
4 được sử dụng để tìm kiếm các trường hợp theo nghĩa đen là
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
3 và
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
5 trong các bối cảnh phù hợp với mẫu, nơi chúng sẽ được hiểu là ký tự ký tự đại diện. Xem mô tả của toán tử
SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';
3 trong Phần & NBSP; 12.8.1, Chức năng so sánh chuỗi và toán tử. Nếu bạn sử dụng
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
2 hoặc
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
4 Bên ngoài bối cảnh phù hợp với mẫu, họ sẽ đánh giá các chuỗi
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
2 và
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
4, không phải là
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
3 và
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8mb4'string' COLLATE utf8mb4_danish_ci;
5.

Có một số cách để bao gồm các ký tự trích dẫn trong một chuỗi:

  • A ' bên trong một chuỗi được trích dẫn với ' có thể được viết là

    'a string'
    "another string"
    2.

  • Một

    'a string'
    "another string"
    0 bên trong một chuỗi được trích dẫn với
    'a string'
    "another string"
    0 có thể được viết là
    mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
    +-------+---------+-----------+--------+--------+
    | hello | "hello" | ""hello"" | hel'lo | 'hello |
    +-------+---------+-----------+--------+--------+
    
    mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
    +-------+---------+-----------+--------+--------+
    | hello | 'hello' | ''hello'' | hel"lo | "hello |
    +-------+---------+-----------+--------+--------+
    
    mysql> SELECT 'This\nIs\nFour\nLines';
    +--------------------+
    | This
    Is
    Four
    Lines |
    +--------------------+
    
    mysql> SELECT 'disappearing\ backslash';
    +------------------------+
    | disappearing backslash |
    +------------------------+
    5.

  • Trước ký tự trích dẫn bởi một ký tự thoát (

    'a string'
    "another string"
    1).

  • Một ' bên trong một chuỗi được trích dẫn với

    'a string'
    "another string"
    0 không cần điều trị đặc biệt và không cần phải nhân đôi hoặc thoát khỏi. Theo cách tương tự,
    'a string'
    "another string"
    0 bên trong một chuỗi được trích dẫn với ' không cần điều trị đặc biệt.

Các tuyên bố text1 sau đây cho thấy cách trích dẫn và thoát khỏi công việc:

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+

mysql> SELECT 'This\nIs\nFour\nLines';
+--------------------+
| This
Is
Four
Lines |
+--------------------+

mysql> SELECT 'disappearing\ backslash';
+------------------------+
| disappearing backslash |
+------------------------+

Để chèn dữ liệu nhị phân vào cột chuỗi (chẳng hạn như cột text2), bạn nên biểu diễn các ký tự nhất định bằng các chuỗi thoát. Backslash (

'a string'
"another string"
1) và ký tự trích dẫn được sử dụng để trích dẫn chuỗi phải được thoát. Trong một số môi trường khách hàng nhất định, cũng có thể cần phải thoát text4 hoặc điều khiển+z. Máy khách MySQL cắt các chuỗi trích dẫn có chứa các ký tự text4 nếu chúng không bị thoát và Control+Z có thể được thực hiện cho phần cuối trên Windows nếu không thoát ra. Đối với các chuỗi thoát đại diện cho mỗi ký tự này, hãy xem Bảng & NBSP; 9.1, Trình tự thoát ký tự đặc biệt.mysql client truncates quoted strings containing text4 characters if they are not escaped, and Control+Z may be taken for END-OF-FILE on Windows if not escaped. For the escape sequences that represent each of these characters, see Table 9.1, “Special Character Escape Sequences”.

Khi viết các chương trình ứng dụng, bất kỳ chuỗi nào có thể chứa bất kỳ ký tự đặc biệt nào phải được thoát đúng trước khi chuỗi được sử dụng làm giá trị dữ liệu trong câu lệnh SQL được gửi đến máy chủ MySQL. Bạn có thể làm điều này theo hai cách:

  • Xử lý chuỗi với một hàm thoát khỏi các ký tự đặc biệt. Trong chương trình C, bạn có thể sử dụng hàm API text6 C để thoát khỏi các ký tự. Xem mysql_real_escape_string_quote (). Trong các câu lệnh SQL xây dựng các câu lệnh SQL khác, bạn có thể sử dụng hàm text7. Giao diện Perl DBI cung cấp phương thức text8 để chuyển đổi các ký tự đặc biệt thành các chuỗi thoát thích hợp. Xem Phần & NBSP; 29.9, MYSQL PERL PERL API. Các giao diện ngôn ngữ khác có thể cung cấp một khả năng tương tự.

  • Thay thế cho việc thoát khỏi các ký tự đặc biệt một cách rõ ràng, nhiều API MySQL cung cấp khả năng giữ chỗ cho phép bạn chèn các điểm đánh dấu đặc biệt vào chuỗi câu lệnh và sau đó liên kết các giá trị dữ liệu với họ khi bạn đưa ra câu lệnh. Trong trường hợp này, API quan tâm đến việc thoát khỏi các ký tự đặc biệt trong các giá trị cho bạn.

Làm cách nào để thêm một ký tự vào một chuỗi trong mysql?

Chèn () hàm Chuỗi gốc, chuỗi sẽ được chèn, một vị trí chèn trong chuỗi gốc và số lượng ký tự được xóa khỏi chuỗi gốc - tất cả đều được chỉ định là đối số của hàm. Chuỗi ban đầu. Vị trí chèn trong chuỗi ban đầu. The original string, the string which will be inserted, a position of insertion within the original string and number of characters to be removed from the original string - all are specified as arguments of the function. Original string. Position of insertion within the original string.

Những nhân vật đặc biệt nào không được phép trong MySQL?

1 câu trả lời..
ASCII: U+0001 .. U+007F ..
Mở rộng: U+0080 .. U+FFFF ..

Làm thế nào để bạn thêm các ký tự đặc biệt vào cơ sở dữ liệu?

Sử dụng mysqli_real_escape_string () để chèn các ký tự đặc biệt vào cơ sở dữ liệu trong PHP.Để có được đầu vào của người dùng với các ký tự đặc biệt từ các trường biểu mẫu, chúng tôi sử dụng hàm MySQLI_REAL_ESCAPE_STRING ().Chúng tôi cần các tham số sau: Kết nối cơ sở dữ liệu và các chuỗi chúng tôi muốn thoát.. To get user input with special characters from the form fields, we use the mysqli_real_escape_string() function. We need the following parameters: database connection and the strings we want to escape.

Varchar có cho phép các ký tự đặc biệt MySQL không?

Vậy Varchar trong SQL là gì?Như tên cho thấy, Varchar có nghĩa là dữ liệu ký tự khác nhau.Còn được gọi là ký tự biến, nó là một kiểu dữ liệu chuỗi độ dài không xác định.Nó có thể giữ số, chữ cái và ký tự đặc biệt.It can hold numbers, letters and special characters.