drqyxkzbs21968684 2012-07-19 16:21
浏览 27
已采纳

如何在查询中使用LIKE和_?

i've a sql database with thousands of URLs. And i constantly update it without any modification in the Url using php5.

now, i'd like the add only the url which are not present in the database, i do this by check the database using this sql query

$q = $urlToCheck;
SELECT * FROM pligg WHERE rawUrl LIKE '$q%'

Here is the problem, some of the Urls which are already in the database are like

http://example.com/a_b_c.html
http://example.com/a1b1c.html

if i run the query

$q = 'http://example.com/a_b';
SELECT * FROM pligg WHERE rawUrl LIKE '$q%'

then it will return both the Urls. I want to return only the exact match Url. So, i want to get only this url

http://example.com/a_b_c.html

any help?

  • 写回答

1条回答 默认 最新

  • doupu5941 2012-07-19 16:23
    关注

    For MySQL you need to escape the _; it should be \_. For MSSQL it should be [_]

    EDIT
    Here's the manual page on _ and escaping wildcards as % and _ for MySQL. You can actually specify the escape character if you like.

    $q = 'http://example.com/a_b';
    $qescaped = str_replace('_', '\_', $q);
    
    $result = my_execute_query_function($qescaped);
    

    Here's the manual page for MSSQL.

    $qescaped = str_replace('_', '[_]', $q);
    

    (Also: MSSQL also allows you to specify the escape character (which I didn't know)).

    Other RDBMS'es like PostgreSQL, Oracle etc. might have their own escape characters and/or ways of specifying them. Check their respective manual pages (linked for your convenience).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行