3

我有一个看起来像这样的表:

+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(30)      | NO   |     |         |                |
+-------+------------------+------+-----+---------+----------------+

很简单的表。出于以下几个原因,我正在尝试找到一种仅选择最大长度为 8 个字符的结果的方法:

1) 为记录集创建的 HTML 表太窄,无法处理超过 8 个字符的内容。

2) 我们不能在显示名称时截断名称。

我正在查看 MySQL 手册,但找不到任何可靠的结果。我将尝试在 where 子句中使用 char_length ,看看我能想出什么并将我发现的东西发回,但我希望有人以前做过。

4

1 回答 1

5

您需要使用CHAR_LENGTH来获取字符的长度。尝试:

SELECT *
FROM tableName
WHERE CHAR_LENGTH(name) <= 8       -- selects 8 characters or below
-- WHERE CHAR_LENGTH(name) = 8     -- selects exactly 8 characters

附加信息:

LENGTH()返回以字节为单位的字符串长度。
CHAR_LENGTH()返回以字符为单位的字符串长度。

select length(_utf8 '€') as ByteCount, char_length(_utf8 '€') LengthCount

--  Result
--  ============+==============
--  ByteCount   +   LengthCount
--  ============+==============
--         3    +           1
--  ============+==============
于 2012-08-21T01:45:32.533 回答