2013-03-12 31 views
5

Làm cách nào tôi có thể thấy dấu cách trong Chuỗi khi sử dụng chọn bằng lệnh sql-command-line-client?cách xem khoảng trống trong dữ liệu khi chọn bằng ứng dụng dòng lệnh mysql

Ý tôi là như sau. bạn có ba dòng. 1, 2 và 3 Spaces. Bạn không có cơ hội xem số lượng khoảng trắng.

create table foo(bar varchar(8)); 
insert into foo values(" "),(" "), (" "); 

select * from foo\g 
+------+ 
| bar | 
+------+ 
|  | 
|  | 
|  | 
+------+ 

mysql> select * from foo\G 
*************************** 1. row *************************** 
bar: 
*************************** 2. row *************************** 
bar: 
*************************** 3. row *************************** 
bar:  
3 rows in set (0.01 sec) 

Các lựa chọn duy nhất tôi đã đưa ra là:

mysql> select bar, hex(bar) from foo; 
+------+----------+ 
| bar | hex(bar) | 
+------+----------+ 
|  | 20  | 
|  | 2020  | 
|  | 202020 | 
+------+----------+ 
3 rows in set (0.01 sec) 

Something như var_export trong php sẽ được tốt đẹp.

+1

Làm cách nào để thêm một số ký tự trước và sau? 'select bar, '>' + bar + '<' từ foo' –

+0

tôi cũng nghĩ về điều này. bit trong mysql nó không phải là rất thuận tiện: "concat ('>', bar, '<')" và chuỗi sẽ không nhận được ecsaped đúng cách. – jens

Trả lời

5

Nó xuất hiện có một chuỗi chức năng QUOTE (Thoát khỏi đối số để sử dụng trong một câu lệnh SQL) hoạt động thực sự tốt đẹp.

-- to add another tricky example 
mysql> insert into foo values(" \" ' "), ("''"); 
Query OK, 1 row affected (0.06 sec) 

mysql> select bar, quote(bar) from foo; 
+-------+------------+ 
| bar | quote(bar) | 
+-------+------------+ 
|  | ' '  | 
|  | ' '  | 
|  | ' '  | 
| " ' | ' " \' ' | 
| '' | '\'\''  | 
+-------+------------+ 
4 rows in set (0.00 sec) 
0

Nếu đây chỉ là hiển thị không gian thì bạn sẽ cần phải mã hóa chuỗi trước khi lưu trữ. Nếu đó là về so sánh thì bạn sẽ thấy rằng các chuỗi đầu (trước một khoảng trắng) được giữ nguyên trong khi dấu vết không được. Xem thêm ở đây: here

0

Làm thế nào về việc sử dụng chuỗi LENGTH() để có được một kết quả tương tự như phpvar_export()

SELECT bar, LENGTH(bar) FROM foo; 
+0

điều này có thể làm việc cho chuỗi ngắn, nhưng những gì về chuỗi dài (ví dụ 325 ký tự)? một lần nữa bạn không thể xác định nơi chuỗi kết thúc. – jens

0

Bạn có thể thay dấu cách bằng một số nhân vật khác trong đầu ra như:

mysql> SELECT REPLACE(' ', ' ', '|'); 

+--------------------------+ 
| REPLACE(' ', ' ', '|') | 
+--------------------------+ 
| |||      | 
+--------------------------+ 
1 row in set (0.00 sec) 
Các vấn đề liên quan