0 0

sql 语句问题0

select * from fs_system_type as a left join sys_menu as c on a.id=c.system_id where a.id in (select top 1 department_right from department where id=1) order by sort_num


服务器: 消息 245,级别 16,状态 1,行 1
将 varchar 值 '1,2,3,4,10' 转换为数据类型为 int 的列时发生语法错误。

我知道是 "in (select top 1 department_right from department where id=1)" 这句这错了 可是怎么样写才对呢
department 表中 department_right 存的是 fs_system_type的id 用,“,”号隔开的 类似(1,2,3,4)
SQL 
2012年7月06日 11:10

6个答案 按时间排序 按投票排序

1 0

看起来是你在in的时候需要将'1,2,3,4,10'一条记录按逗号分隔符拆开成多条记录,在Oracle里面的话有个正则表达式regexp_substr可以很好的拆分记录:

select *
  from fs_system_type as a
  left join sys_menu as c
    on a.id = c.system_id
 where a.id in
       (select dbms_lob.substr(regexp_substr(t.department_right,
                                             '[^,]+',
                                             1,
                                             x.n)) as department_right
          from department t,
               (select rownum n
                  from dual
                connect by rownum <
                           (select length(f.department_right) -
                                   length(replace(f.department_right, ',', '')) + 2 n
                              from department f
                             where f.id = 1)) x
         where t.project_name = 1)
 order by sort_num;


SqlServer的话,估计要自定义一个split之类的function,这个网上有很多。。

2012年7月06日 12:09
0 0

你可以将select top 1 department_right from department where id=1查询出来的值,直接写在in()中,看看查询结果

2012年7月06日 17:37
0 0

我试了下,好像不会出这样的错误啊,oracle里面允许这样写的啊,查出来多个值,然后用in来匹配查出来的值,可以的啊,能告诉我具体是个什么问题么~不是很明白

2012年7月06日 15:36
0 0

mysql可以这么查:

select * from fs_system_type as a left join sys_menu as c on a.id=c.system_id where find_in_set(a.id , (select top 1 department_right from department where id=1)) order by sort_num 

2012年7月06日 15:03
0 0

拆开来写。

2012年7月06日 13:26
0 0

select top 1 department_right from department where id=1结果是什么?

2012年7月06日 11:38

相关推荐

    sql语句万能生成器,sql语句,sql语句生成

    SQL语句是数据库操作的核心,它用于查询、插入、更新和删除数据,是任何数据库管理系统中的基础工具。在IT行业中,编写SQL语句是一项必备技能,但手动编写和调试SQL语句可能会耗费大量时间和精力,尤其在处理复杂...

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    .net中无法创建sql语句解决方案

    本篇文章将深入探讨当在.NET环境中遇到无法创建SQL语句问题时的解决策略,帮助开发者更好地理解和处理此类问题。 ### .NET环境中的SQL语句创建 #### 基础概念 .NET框架为开发人员提供了丰富的工具和技术来处理...

    sql语句说明sql语句说明sql语句说明.zip

    sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明sql语句说明...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    在Java编程中,调试SQL语句是开发过程中的常见任务,尤其当面对复杂且冗长的查询时。为了提高效率并使SQL语句更易于理解和分析,格式化SQL语句显得尤为重要。标题提及的"Java打印漂亮的SQL语句(被格式化的SQL语句)...

    实用toad抓oracle中较慢的sql

    此外,Toad还提供了其他功能,例如SQL优化顾问、索引顾问、锁定分析等,能够帮助数据库管理员快速诊断和解决慢SQL语句问题。 结论 使用Toad工具可以方便地抓取运行较慢的SQL语句,并对其进行深入分析和优化。Toad...

    hibernate执行原生sql语句

    "hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...

    SQLServer动态SQL语句的用法

    SQL Server 动态 SQL 语句的用法 SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL ...

    PB脚本中SQL语句写法与SQL中语句写法对照

    PB脚本中SQL语句写法与SQL中语句写法对照 PB脚本中SQL语句写法与SQL中语句写法对照是非常重要的知识点,因为PB脚本和SQL语言在写法和应用中有所不同。本文将对PB脚本中SQL语句写法和SQL中语句写法进行对比和分析。 ...

    sql语句sql语句sql语句sql语句.txt

    sql语句sql语句sql语句sql语句sql语句

    oracle监听执行sql语句

    在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...

    SQLTracker,抓取sql语句的工具

    1. **SQL捕获**:它可以实时捕获应用程序在运行过程中发送到数据库的所有SQL语句,这对于排查性能问题、理解业务逻辑或优化数据库操作极其有价值。 2. **无源码需求**:SQLTracker的一大亮点是无需源代码就能工作,...

    sql语句范例 全面掌握SQL语句

    全面掌握SQL语句 详细的SQL语句介绍 详细的SQL语句介绍 详细的SQL语句介绍 详细的SQL语句介绍

    SQL 执行超长语句

    ### SQL执行超长语句详解 在数据库管理与开发过程中,编写SQL语句是必不可少的一环。...通过采取上述提到的一些策略和技术手段,可以有效缓解因超长SQL语句带来的问题与挑战,最终实现更高效的数据处理与分析能力。

    完成超长SQL语句执行前拆分

    在使用Visual Basic (简称VB)进行数据库操作时,可能会遇到因为SQL语句过长而导致无法正常执行的问题。这种情况下,即使该SQL语句可以在SQL Server的查询分析器中成功运行,但在VB程序中却会因为长度限制而失败。...

    查看LINQ生成SQL语句的几种方法

    在实际开发中,有时我们需要了解LINQ查询是如何转换为SQL语句的,以便于调试和优化性能。以下将详细介绍几种查看LINQ生成SQL语句的方法。 1. **Debug.WriteLine()** 在使用LINQ查询时,可以利用`Debug.WriteLine()...

    非常好用的SQL Server 抓取SQL语句工具HOOK

    非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK

    sql语句、动态SQL语句基本语法

    在数据库管理系统(如MySQL、Oracle、SQL Server等)中,SQL语句是不可或缺的一部分。 1. SQL基础语法 SQL的基础语法包括SELECT、INSERT、UPDATE、DELETE四大语句,它们分别用于查询、插入、更新和删除数据。 - ...

    arcgis中的sql语句

    ### ArcGIS中的SQL语句详解 #### 一、SQL在ArcGIS中的角色与应用 SQL,全称为Structured Query Language,即结构化查询语言,是专为数据库设计的一种标准语言,用于管理和操作数据库中的数据。在ArcGIS环境中,SQL...

    SQL语句拼接工具,简化SQL语句拼写代码

    为了解决这个问题,出现了SQL语句拼接工具,如描述中提到的,它能帮助简化SQL语句的拼写代码,提高开发效率。 标题中的“SQL语句拼接工具”是指一种软件开发辅助工具,它的主要功能是自动化生成SQL语句,特别是在...

Global site tag (gtag.js) - Google Analytics