Sybase 字符串连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sybase 字符串连接相关的知识,希望对你有一定的参考价值。

有以下表 Test,有两个字段A int,B varchar

我想将Test表中的所有结果集以 ‘A-B,A-B’的形式连接成一个长的字符串

请问该怎么做,非常感谢大家~
convert 我知道,重点是怎么把结果集以这种新式连接起来

都没有实现,解决方案:
创建一个临时表
create table #tmp(A int,B varchar(20),updated varchar(1) default 'N')
insert into #tmp(A,B)
select A,B from Test
declare @rowct int,@str varchar(255)
select @rowct = count(A) from #tmp
while(@rowct >0)
begin
select top 1 A,B from #tmp where updated='N'
update #tmp set updated='Y' where ...
select @str = @str + convert(varchar(6),A)+'-'+B from #tmp where ...
set @rowct = @rowct -1
end
select @str

declare @str varchar(8000)
SET @str=''

SELECT @str=@str+CAST(A AS varchar(10))+'-'+B+','
FROM Test;
SET @str=LEFT(@str,LEN(@str)-1)
SELECT @str;

由于varchar只支持最多8000字节长度,所以,如果记录很多,可能记录就不全了。
参考技术A convert(char(50),A - convert(integer,B))

convert是sybase中的类型转换函数。
convert(datatype,变量[,显示格式])
参考技术B 哥们~~这么整
create table #test (A int, B varchar(10))
insert #test values(10,"测试")
insert #test values(11,"测试1")

create table #test1 (A int, B varchar(10),C varchar(20))
insert into #test1
select a.A,a.B,convert(varchar(10),a.A) + '-' + a.B from #test a

select C from #test1 这个C字段是否就是你需要的效果?
参考技术C ‘A-B,A-B’是什么概念??字符串相减??还是相连??
相连:

select rtrim(convert(char,A))+B+','+rtrim(convert(char,A))+B
FROM Test

因为int转为char是会有空格,所以用rtim将空格去掉。

基本上就是这个格式,你可以根据自己的要求来组合

select rtrim(convert(char,A))+'-'+B+','+rtrim(convert(char,A))+'-'+B
FROM Test
参考技术D select into 创建一张临时表

delphi2006如何用ADO或dbExpress连接sybase12.5数据库? 目前我只能连MSSQL

我用ADO连接,连接字符串为 Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=bsdb; Password=1111111;User ID=sa; Persist Security Info=True; Server Name=10.113.154.241; Server Port Address=5000 连接好象不行,用select 语句来查数据库不成功,我看了网上很多的贴子,没有一个能成功。
用dbExrpess来连接也不行,提示unable to load libct.dll
在dbExpress中连接MYSQL,建立SQLconnection是成功的,但是执行SQLquery时提示“灾难性故障"
dbExpress中MSSQL可以正常连接并执行数据库操作。

参考技术A 下个sybase的驱动,ado控件是不能直接支持sybase,mysql之类的连接的。sybase的官网应该有这些驱动的下载。至于mysql官网提供的驱动应该是ODBC的,需要先设置好ODBC后才能进行连接,而且需要注意的是,在ODBC设置完成后,ADO控件就只需要选择好数据源就可以了,如果再设置对应的默认数据库,就会出现提示“灾难性故障" 参考技术B 首先在TADOConnection里面有图形化的方式可以帮助你构造连接字符串,如果你的电脑上没有安装sybase的驱动,那么就没法构建相应驱动的连接字符串,运行的时候自然连接不上数据库。追问

我已经装了sybase,也从网上下了OLE DB Provicer for Sybase ASE,但是在在TADOConnection里面以图形化的方式构造连接字符串时,它只能是以数据源的方式(也就是ODBC),但是我不想用ODBC来连。不知道可不可以直连呢?

参考技术C 建议换个delphi版本试一试追问

delphi版本有问题吗?我用的是delphi2006,应该用哪个呢

追答

最新的是xe5,xe4网上也比较常见(你懂的),你试一试。不行你就ODBC连接吧,delphi 的 ado连接的速度本来也不快,将就用吧。

以上是关于Sybase 字符串连接的主要内容,如果未能解决你的问题,请参考以下文章

C#连接Sybase数据库,Anywhere 8

如何通过ODBC连接Sybase数据库

如何在 Sybase 中使用通用连接池 (UCP)?

nodejs sails sybase连接错误

intelij idea连接sybase数据库,数据插入问题

C#.net连接Sybase的方法