我有一个看起来像这样的表:
+-------+------------------+------+-----+---------+----------------+
| 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,看看我能想出什么,并将发回我找到的内容,但我希望之前有人这样做过。
答案 0 :(得分: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
-- ============+==============