在SQLSERVER数据库表中遍历列,遍历的列的字段包含在另一个表的某列中

在SQLSERVER数据库表中遍历列,遍历的列的字段包含在另一个表的某列中,第1张

有游标循环即可。

decalre @fieldName varchar(128)

declare @sql varchar(max)

set @sql='select row_number() '

declare MyCur cursor for select ID form table1

open

fetch next from MyCur into @FieldName

while @@fetch_status = 0

begin

@sql=@sql +','+@FieldName

fetch next from MyCur into @FieldName

end

set @sql =@sql +' from tablename'

exec(@sql)

--关闭释放游标

public void jButton1_actionPerformed(ActionEvent actionEvent) {

try {

Connection con=conDB();

Statement st = concreateStatement();

ResultSet rs=stexecuteQuery("select NAME,PRICE from test");

StringBuffer sb=null;

定义一个 StringBuffer sb;

sbappend(rsgetString("NAME")+" "+rsgetString("PRICE"))

while(rsnext() )

{

sbappend(rsgetString("NAME")+" "+rsgetString("PRICE"));

jTextAreaappend(sbtoString());

}

rsclose();

stclose();

conclose();

}

catch(Exception e){

JOptionPaneshowMessageDialog(null,"出现异常!");

}

}

有时候数据库管理员在查询记录的时候 有可能只是查询条件不同 而其他的内容都是相同的 如人事部门可能每天都需要查询当天矿工 迟到 早退的员工 然后向人事经理汇报 其实这个时候SQL语句的大部分都是相同的 只是查询条件中一个时间不一样而已 遇到这种情况时 数据库管理员需要创建可以使用多次但每次使用不同值的查询 在SQLServer数据库中 把这种情况叫做参数查询

一 在什么时候使用参数符号

在SQLServer数据库中 其提供的语言支持使用参数来作为查询条件 如果用户需要创建每次使用不同值的查询 则可以在查询中使用参数 那么这个参数到底是什么呢其实确切的说 应该把这个参数叫做占位符 即参数是在运行查询时提供值的占位符 在SQLServer数据库中 在需要显示的内容(Select子句)与查询条件(Where子句)中都可以采用参数 从其他地方接收输入的值 不过大部分情况下 都只在查询条件中使用参数 即在单个行或者组的搜索条件中使用参数作为占位符

不过并不是说只有在搜索条件中才能够使用参数 只是说在搜索中参数使用的比较多而已 另外 有时候在表达式中可能也会用的比较多 如一个ERP系统中 可能会有一定的价格折扣 如 %的折扣 那么在应用程序设计的时候 就需要把这个折扣率从前台传递到后台的SQL语句中 然后数据库系统根据这个折扣率把计算后的架构回传给前台的客户端 在这个过程中 如果能够采用参数来实现的话 就可以提高SQL语句的利用率 不用每次使用不同的折扣率 而采用不同的SQL语句

所以说 参数在SQLServer中的应用范围是非常广泛的 通常情况下 在SQL语句的任何部分都可以采用参数来接受外部传入的值 从而避免每次参数不同而调整SQL语句的情况

二 未命名参数与命名参数

在SQLServer中 参数可以分为两种 即未命名参数与命名参数 通常情况下 如果SQL语句中只需要一个参数的话 那么可以采用未命名参数 如需要查询某个员工上班到现在的全部出勤信息 此时就只需要用到员工编号这个参数即可 此时可以采用未命名的参数 不过有的时候可能查询时需要不止一个参数 如现在需要查询某个员工在 月份的出勤情况 此时就需要两个参数 分别为员工编号 月份 或者需要三个参数 分别为员工编号 开始日期 结束日期等等 总之要多于一个参数 此时就需要使用命名参数 因为如果使用未命名参数的话 则数据库并不知道要把哪个参数对应到哪个地方 所以说 如果要在查询中使用多个参数 那么此时命名参数就会非常有用

未命名的参数使用很简单 不需要像应用程序开发那样 先声明再使用 而是在需要的地方直接输入符号即可 如需要把某个员工最为参数的话 则可以使用ad_user_id =即可 这里需要注意一点 这里不需要加入单引号 因为正常情况下 如果输入的条件是字符型的话 则必须利用单引号括起来 如果输入的条件是数字的话 则不用单引号 但是如果采用的是参数的话 无论最终输入的数据类型是什么 这里都不用单引号 否则的话 就不能够达到预期的效果

如果采用的是命名参数的话 也不需要事先定义 只需要在使用的时候定义参数名字即可 这个定义的过程也很简单 如现在用户需要按员工编号与日期来查询某个员工的出勤记录 此时只需要使用AD_USER_ID=%USER_ID% AND USERDATE=%USERSDATE% 从这里可以看出 未命名参数与命名参数使用的参数符号是不同的 在命名参数是 需要中参数名字的前后使用%号 表示这是一个命名参数 不过这个前缀与后缀的字符数据库管理员可以根据自己的需要来进行自定义 不过需要注意的就是 在创建命名参数查询之前 必须要先预先定义后这个参数的前缀与后缀符号

三 在循环中使用参数标记

参数不仅可以用在Select查询语句中 有时候在一些循环语句中也可以使用 如现在有一个股票分析系统 用户自定义了 只关注的股票 现在这个系统要每隔 秒就从数据库系统中读取这十只股票的最新价格 此时该如何实现呢

当然用户也可以在查询条件语句中通过输入 个股票的代码来实现查询 但是这个做非常的麻烦 而且由于用户关注的股票数量不确定 所以采用多个命名参数来实现的话 也不现实 虽然SQL语句可以接受多个参数 但是其参数的数量必须是固定的 像现在这种不固定的参数 SQL语句也很难实现 针对这种情况 只有通过循环语句来实现 即在SQL语句中只使用一个参数 即股票代码这个参数 然后通过循环语句把用户选定的股票代码一个一个的传递进去 传进去第一个后 数据库返回结果;然后再传进去第二个 再返回结果 知道最后一个参数传递完毕 通常情况下 可以把这个循环语句做成一个存储过程或者函数 然后通过参数的个数来控制循环的次数 这种解决方案可以很好的实现因为参数个数不确定而难以处理的情况 当然 这其中仍然参数在起著主导作用

四 在SET语句中使用参数

企业有时候可能遇到这种需求 即把满足某个条件的记录中 某些字段利用某个参数值来进行代替 如企业可能经济效益好 要把提升员工的工资 其中普通员工提升 % 管理层员工提升 % 此时就需要用到SQL语句中的Update语句 这更新的时候 需要用到两个参数 一个是员工的类别 即是属于普通员工又或者是属于管理层员工;第二个参数是提升的百分比 是提升 %还是 %

其实在实际工作中 有很多地方需要用到类似地参数与语句 如在ERP系统中 有时候需要根据产品的类别或者供应商来更新价格;如有时候需要把好几年都没有用过的产品信息设置为不活跃;有时候需要把订单尾数少于 的采购订单指定为结束等等 所有 数据库管理员必须要掌握这种参数与Upadate语句结合使用的案例 这有助于数据库管理员在日后的工作中 利用这些语句顺利完成任务

五 使用参数时的注意事项

从上面分析中可以看出 使用参数与不使用参数有一个很大的区别 如果直接在SQL语句中输入查询条件(不通过参数来实现) 那么数据库在编译SQL语句的时候 会进行语法方面的检查 如果输入的条件有错误 或者其数据类型跟需要比较字段的数据类型不一致 或者在SET语句中需要更新的值与数据库字段的数据类型不一致的话 那么数据库就会提示错误信息 也就是说 在执行语句之前 就对了一道保障

但是如果使用参数来传递数据的话 有一个不好的信息 即在SQL语句执行时 传递的参数是否符合要求呢此时对数据库来说 只有在SQL语句执行的时候才能够知道 为了避免这种情况 最好能够在应用程序那边进行相关的判断与限制 如需要查询今天是否有员工旷工 迟到 早退等等情况 一共需要两个参数 一是时间 二是事由(可以多选) 但是这两个数据又都是比较特别的 如时间是一个日期类型的数据 如果在应用程序客户端用户不小心输入了一个不是日期类型的数据 或者把 年 月 日写成了 年 月 日 这很可能是笔误 但这毕竟是错误 数据库无法识别类似的错误 为此最好能够在应用程序客户端处就进行检查 如果发现这个输入的日期非法的话 就在客户端把这个参数传递给数据库之前就提示参数输入错误

lishixinzhi/Article/program/SQL/201311/16381

四大主流数据库比较

一、开放性

1SQLServer

只能在windows上运行,没有丝毫的开放性, *** 作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NTserver只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。

2Oracle

能在所有主流平台上运行(包括windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

3SybaseASE

能在所有主流平台上运行(包括windows)。但由于早期Sybase与OS集成度不高,因此VERSION1192以下版本需要较多OS和DB级补丁。在多平台的混合环境中,会有一定问题。

4DB2

能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。

二、可伸缩性,并行性

1SQLserver

并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。

2Oracle

并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。

3SybaseASE

虽然有DBSWITCH来支持其并行服务器,但DBSWITCH在技术层面还未成熟,且只支持版本125以上的ASESERVER。DBSWITCH技术需要一台服务器充当SWITCH,从而在硬件上带来一些麻烦。

4DB2

具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点安全性。

三、安全认证

1SQLserver

没有获得任何安全证书。

2OracleServer

获得最高认证级别的ISO标准认证。

3SybaseASE

获得最高认证级别的ISO标准认证。

4DB2

获得最高认证级别的ISO标准认证。

四、性能

1SQLServer

多用户时性能不佳

2Oracle

性能最高,保持开放平台下的TPC-D和TPC-C的世界记录。

3SybaseASE

性能接近于SQLServer,但在UNIX平台下的并发性要优与SQLServer。

4DB2

性能较高适用于数据仓库和在线事物处理。

五、客户端支持及应用模式

1SQLServer

C/S结构,只支持windows客户,可以用ADO、DAO、OLEDB、ODBC连接。

2Oracle

多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。

3SybaseASE

C/S结构,可以用ODBC、Jconnect、Ct-library等网络客户连接。

4DB2

跨平台,多层结构,支持ODBC、JDBC等客户。

六、 *** 作简便

1SQLServer

*** 作简单,但只有图形界面。

2Oracle

较复杂,同时提供GUI和命令行,在windowsNT和unix下 *** 作相同。

3SybaseASE

较复杂,同时提供GUI和命令行。但GUI较差,常常无法及时状态,建议使用命令行。

4DB2

*** 作简单,同时提供GUI和命令行,在windowsNT和unix下 *** 作相同。

七、使用风险

1SQLserver

完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容。

2Oracle

长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。

3SybaseASE

向下兼容,但是ct-library程序不益移植。

4DB2

在巨型企业得到广泛的应用,向下兼容性好。风险小

以上就是关于在SQLSERVER数据库表中遍历列,遍历的列的字段包含在另一个表的某列中全部的内容,包括:在SQLSERVER数据库表中遍历列,遍历的列的字段包含在另一个表的某列中、java 查询数据库怎么循环输出、查询参数提高SQL语句的利用率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9770905.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存