【问题标题】:Trying to use LIKE operator on Integer尝试在整数上使用 LIKE 运算符
【发布时间】:2021-11-11 23:46:25
【问题描述】:

我目前正在尝试使用 SQL 查询为我的应用程序实施过滤系统。过滤器工作正常,但我试图涵盖所有可能性,其中之一是我想要它,所以使用我的子字符串选项,如果我有更多的 ID 为 1,我可以检索超过 1 个值。我到底该怎么做用我的查询去做吗?我看到 cast 是一个选项并尝试添加,但它似乎不起作用,这是我的两个版本:

@Query("SELECT e FROM DeDomain1 e, DeDomain2 c WHERE e.studentId = c.id "  
            "AND CAST e.studentId AS VARCHAR AND (:studentId is null OR e.studentId LIKE '%' + :studentId + '%')"...)

我尝试添加 CAST,但它似乎不起作用,错误包含 QuerySyntaxException。因此,我会假设我做错了/写错了,如果是这样,有人知道我是怎么做错的吗?

【问题讨论】:

  • 你使用的是哪个数据库??
  • SQL Server 管理工作室
  • 请显示您正在查询的表的结构、该表中的示例数据以及您查询的所需结果集的示例。

标签: sql-server


【解决方案1】:

像这样试试。

@Query("SELECT e FROM DeDomain1 e, DeDomain2 c WHERE e.studentId = c.id "
"AND (:studentId is null OR e.studentId LIKE '%' + :CONVERT(varchar(10), studentId )+ '%')")

【讨论】:

    【解决方案2】:

    你可以试试这个语法:

    @Query("SELECT e.*
       FROM DeDomain1 e, 
       DeDomain2 c 
       WHERE e.studentId = c.id
       AND (:studentId is null 
            OR cast(e.studentId AS VARCHAR(10)) LIKE concat('%' ,:studentId , '%')))")
    

    【讨论】:

    • 感谢您的回复,但得到了这个:期待关闭,找到'('
    • 我把它分解了一下,发现 concat 部分很好,但是在添加 cast 函数时,它似乎一直说它缺少一个 )。
    • @softtouch VARCHAR(10) 之后缺少的东西 :) 真的,你应该找到显示匹配大括号的编辑器。
    • "CAST(e.studentID AS VARCHAR(10) ) LIKE" 你没有关闭你的 CAST()
    猜你喜欢
    • 2021-12-24
    • 2021-08-24
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多