gpt4 book ai didi

mysql - IDS 外观相同但实际上不同

转载 作者:可可西里 更新时间:2023-11-01 08:35:31 25 4
gpt4 key购买 nike

我遇到了一个非常奇怪的问题,在我的数据库中,我将我的 id 设置为主键,它也存储了那些相同的 id,例如:

+--------+|   ID   |+--------+|  ABC94 ||  ABC94 |+--------+

When I deleted them then from phpmyadmin, then it generates following queries for deletion in which you can see one id contains \r which makes its unique but is not visible on select view. Kindly let me know how can i make sure when ids are getting saved then it should only take ABC94 part and ignore any parts like \r or \d or the like . Thanks,

DELETE FROM `Db` WHERE `ID` = 'ABC94\r';
DELETE FROM `DB` WHERE `ID` = 'ABC94';

我尝试了下面的代码,但由于 \ 它给了我错误我猜是因为当我使用 - 而不是 \ 时它工作正常/p>

SELECT SUBSTRING_INDEX( "ABC94\r",  "\", 1 )

最佳答案

如果有任何额外空白的可能性,您必须在插入之前在您的应用程序代码中处理它,或者在插入时使用 RDBMS 将其删除。

INSERT INTO `Db` (`ID`) VALUES (TRIM('input value'))

除非您设计一种用其他可打印字符替换白色字符的方案,否则您无法在不违反键的情况下更新现有行。

例如,将回车符替换为x,它们仍然是唯一的:

/* Global replacement of carriage returns with 'x' */
UPDATE `Db` SET `ID` = REPLACE(`ID`, '\r', 'x')

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim

您对 SUBSTRING_INDEX() 的尝试几乎有效,但您应该省略反斜杠,而是提供空字符串 ''

SELECT SUBSTRING_INDEX( 'ABC94\r',  '', 1 )

但是像我上面那样使用 TRIM() 更可靠。如果可能的话,最好的方法是修复输入数据的来源,以避免首先生成这些数据。

关于mysql - IDS 外观相同但实际上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14054717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com