Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql模式识别与更新_Php_Mysql - Fatal编程技术网

Php Mysql模式识别与更新

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

我有一个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
    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栏中更新它-下面的人理解我的要求,尽管你反对。谢谢戈登·林诺夫