我有一张桌子:
CREATE TABLE `ids` (
id int(11) not null auto_increment,
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
它包含一些ID:111,112,113,114等.
我提出了一个问题:
SELECT * FROM `ids` WHERE id = '112abcdefg'
Run Code Online (Sandbox Code Playgroud)
我没想到,但我得到了一个结果,一行ID为112.似乎MySQL悄悄地将我的字符串转换为整数,然后将其与列值进行比较.
如何更改查询以便从id列中查询相同的字符串将不会产生任何我期望的结果?MySQL中是否有严格的比较修饰符?
这是受到求职面试中的一个问题的启发:你如何有效地生成N个独特的随机数?他们的安全和分配/偏见并不重要.
我提出了一种天真的方式来调用rand()N次并通过反复试验消除欺骗,从而得到效率低下且有缺陷的解决方案.然后我读了这个问题,这些算法非常适合获得高质量的唯一数字,它们是O(N).
但我怀疑有些方法可以在低于O(N)时间复杂度的情况下为虚拟任务获得低质量的唯一随机数.我有一些可能的想法:
你的想法?