Php Mysql模式识别与更新
我有一个mysql表,其中包含一列链接 如www.example.com/?book=2 如何选择整个表,但提取id,将其放入自己的列中?一种选择、更新查询 只复制列,然后强制它为int类型,会更容易吗?那我会留下身份证号码吗 这方面的最佳解决方案是什么Php Mysql模式识别与更新,php,mysql,Php,Mysql,我有一个mysql表,其中包含一列链接 如www.example.com/?book=2 如何选择整个表,但提取id,将其放入自己的列中?一种选择、更新查询 只复制列,然后强制它为int类型,会更容易吗?那我会留下身份证号码吗 这方面的最佳解决方案是什么 SELECT id, sourcelink FROM books UPDATE books SET id=1 WHERE sourcelink ='www.example.com?book=1'; 你可以做: update books
SELECT id, sourcelink FROM books
UPDATE books SET id=1 WHERE sourcelink ='www.example.com?book=1';
你可以做:
update books
set id = substring_index(sourcelink, '=', -1) + 0
where sourcelink like '%\?%=%';
这会将id设置为=转换为数字后的值。where子句检查sourcelink的结构是否与您期望的结构相似。这是一个相当松散的模式。使用正则表达式可以使它更具体。如果您的id号总是在文本字符串的末尾,那么这是一个恶作剧但正确的答案
UPDATE books
SET id = CAST(REVERSE(CAST(REVERSE(sourcelink) AS INT)) AS INT) AS id
WHERE CAST(REVERSE(CAST(REVERSE(sourcelink) AS INT)) AS INT) <> 0
这依赖于MySQL将字符串转换为整数的怪癖,这使得MySQL将字符串值99红色气球理解为整数值99。这似乎不正确work@TheOldCounty . . . 我不知道这些是从哪里来的。正确的通配符是%。我不确定它是否值得为未来的人指出,以防万一…%是零到多个字符的通配符,u仅代表一个字符。也可以。好东西,伙计。谢谢你是的-在源链接中找到号码-在id栏中更新它-下面的人理解我的要求,尽管你反对。谢谢戈登·林诺夫