我的表格 Users
,其中一列 user
类型为 VARCHAR(15)
。我可以插入一段时间:
INSERT INTO `LJ`.`Users` (`user`) VALUES ('.')
现在我想搜索这段时间:
SELECT * FROM `Users` WHERE `user` LIKE '.'
或
SELECT * FROM `Users` WHERE `user` = '.'
在这两种情况下,都找不到现有条目:
MySQL返回一个空结果集(即零行)。 (查询耗时0.0001秒)
逗号的问题相同。
实际上,我打算存储像125.50.75.80这样的IP地址,但我把问题归结为无法搜索标点符号。我试过了 '\。'也无济于事。
这是文字的问题;如何处理变量,包含带句点的字符串?
更新:我已在使用表格
在命令行中创建的数据库中进行了测试CREATE TABLE LJ.Users ( user VARCHAR(15) );
一切正常。我怀疑用phpMyAdmin创建的数据库出了问题:
答案 0 :(得分:0)
VARCHAR
列的当前问题是您使用armscii8_general_ci
的整理类型,它会转换一些存储的字符,例如逗号和点。 < / p>
也许你打算使用utf8_general_ci
来产生你想要的结果:
请勿使用VARCHAR
存储IPv4,使用INT unsigned
然后您可以使用INET_ATON()
和INET_NTOA()
函数返回/插入/比较IPv4。
CREATE TABLE users
(
user_ip INT unsigned
);
然后插入您将使用的IPv4:
INSERT INTO users (user_ip) VALUES (INET_ATON('125.50.75.80'));
然后你可以这样读:
SELECT INET_NTOA(user_ip) FROM users WHERE user_ip = INET_ATON('125.50.75.80')