编程拼接
㈠ sql怎么拼接字符串
不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆。
一、MySQL字符串拼接
1、CONCAT函数
语法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定长与不定长均可以
连接两个字符串
(1)编程拼接扩展阅读
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j"。
而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
字符串函数的应用
1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:(‘abdag’,2,3)=’bda’
3、删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4、插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5、求字符串长度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串长度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7、字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(‘a’)=’A’
8、数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s=’12345’
9、数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数,第三个参数也可不传
例:val(‘1234’,x,I);结果 x:=1234
㈡ sql怎么把3个结果拼接
1. sql 三条查询结果 拼接成一个表怎么做呢
你的第一条语句和第三条语句就是一样的,只要把 iperiod=12的判断条件挪到case when 中就租中行。
第二条语句中有分组汇总,这个有两种方法
(1)直接查询,查询完了最后再关联
(2)利用开窗函数sum()over()(看起来简单一些,不过可能速度上不会那么快,而且这个需要测试)
我尝试写一个
select '建凯物业'as 帐套, '2015'as 年度,codelass as 科目分类, gl_accsumode as 科目编码 ,codeode_name as 科目名称,
case when cendd_c='借' and iperiod=1 then mb else 0.0000 end 1借方,
case when cendd_c='贷' and iperiod=1 then mb else 0.0000 end 1贷方,
case when cendd_c='借' and iperiod=12 then me else 0.0000 end 12借方,
case when cendd_c='贷' and iperiod=12 then me else 0.0000 end 12贷方,
sum(md) over(partition by gl_accsumode) as 总借,
sum(mc) over(partition by gl_accsumode) as 总贷
from gl_accsum,code
where gl_accsumode=codeode and code.igrade=1
order by gl_accsumode
2. 如何将两条sql的查询结果拼接在一起显示
拼接代码如下:
select * from
(
select * from a)a1,
select * from b)a2,
)a3
延展阅读:
1. SQL简介
SQL语言早迟,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
2. 简单介绍
SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
3. 应用信息
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。
4. 编辑本段支持标准
SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具陆型李有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。
3. sql语句 怎么把查询的多条结果用,号拼接起来,不用函数就用SQL语
-- 单列拼接,先查出一行,再加上逗号,接着拼接 查出的下一行
select group_concat(E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES,YES,YES,YES,YES,YES,DEFAULT,YES
-- 将查询的结果中的 "," 号,替换成 "**" 号
select REPLACE(group_concat(E.SUPPORT),',','**')
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES**YES**YES**YES**YES**YES**DEFAULT**YES
-- 将查询的结果中 重复 的记录 去掉,只剩一条记录,然后再拼接
select group_concat(DISTINCT(E.SUPPORT))
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES,DEFAULT
-- 多列拼接,同一行的先拼接,再加上逗号,接着拼接下一行
select group_concat(E.ENGINE,E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:MRG_MYISAMYES,MyISAMYES,BLACKHOLEYES,CSVYES,MEMORYYES,ARCHIVEYES,InnoDBDEFAULT,PERFORMANCE_SCHEMAYES
4. 三条SQL语句 拼接在一起 显示出来
用Union ALL :
select tsd.SId, tsl.SName, 人数=COUNT(*) from T_Student tsd,T_School tsl where tsd.SId=tsl.SId group by tsd.SId ,tsl.SName -- (学校人数统计)
Union ALL
select tsd.PId, tst.Position, 人数=COUNT(*) from T_Student tsd,T_Position tst where tsd.PId=tst.PId group by tsd.PId ,tst.Position --(城市人数统计)
Union ALL
select sch.PId, pon.Position, 学校个数=COUNT(*) from T_School sch,T_Position pon where sch.PId=pon.PId grou
㈢ 如何用C语言编写程序将多个wav文件拼接成一个音频wav文件并播放
这不是三言两语的事情,合作wav文件操作并不简单。要研究好wav文件结构,读取文件头,再进行分析和操作。
有两种办法:
1.连续播放,例如:
#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragmacomment(lib,"winmm.lib")
intmain(){
PlaySound("C:\Users\wang\test1.wav",NULL,SND_FILENAME);
PlaySound("C:\Users\wang\test2.wav",NULL,SND_FILENAME);
PlaySound("C:\Users\wang\test3.wav",NULL,SND_FILENAME);
return0;
}
2.系统自带的“windows movie maker”。运行windows movie maker,然后选择“导入音频或音乐”之后把你需要的文件添加进来。然后按照你自己需要排列的顺序把这些文件依次拖到下方的时间线上。然后点左上方的“文件”选项,最后保存电影文件即可。
㈣ C语言编写程序将多个wav文件拼接成一个音频wav文件并播放
#include<stdio.h>
#include<string.h>
#defineRIFF_SIGN_ID0x46464952ul
#defineWAVE_SIGN_ID0x45564157ul
#defineFMT__SIGN_ID0x20746D66ul
#defineFACT_SIGN_ID0x74636166ul
#defineDATA_SIGN_ID0x61746164ul
#ifndefDWORD
typedefunsignedlongDWORD;
#endif
#ifndefWORD
typedefunsignedshortWORD;
#endif
#ifndefBYTE
typedefunsignedcharBYTE;
#endif
structRIFF_HEADER
{
DWORDRiffID;//资源交换文件标志0x46464952'R','I','F','F'
DWORDRiffSize;//从下个地址开始到文件尾的总字节数
DWORDRiffFormat;//WAV文件标志0x45564157'W','A','V','E'
};
structWAVE_FORMAT
{
WORDFormatTag;//格式种类(值为1时,表示数据为线性PCM编码)
WORDChannels;//通道数,单声道为1,双声道为2
DWORDSamplesPerSec;//采样频率
DWORDAvgBytesPerSec;//每秒所需字节数
WORDBlockAlign;//数据块对齐单位(每个采样需要的字节数)
WORDBitsPerSample;//每个采样需要的bit数
WORDotherInfo;//附加信息(可选,通过Size来判断有无)
};
structFMT_BLOCK
{
DWORDFmtID;//波形格式标志0x20746D66'f','m','t',''
DWORDFmtSize;//波形格式部分长度(一般为00000010H)
WAVE_FORMATwavFormat;//波形数据格式
};
structUNKNOW_BLOCK
{
DWORDID;//未知块
DWORDSize;//未知块长度
};
structFACT_BLOCK
{
DWORDFactID;//可选部分标识0x74636166'f','a','c','t'
DWORDFactSize;//可选部分长度
BYTEData[1];//可选部分数据
};
structDATA_BLOCK
{
DWORDDataID;//数据标志符0x61746164,'d','a','t','a'
DWORDDataSize;//DATA总数据长度字节
BYTEData[1];//数据
};
BYTE*openWaveFile(constchar*name);
BYTE*getWaveData(BYTE*wav,int*dLen);
voidprintWaveFormat(BYTE*wav);
intsaveWaveFile(constchar*name,BYTE*wav);
BYTE*catWave(BYTE*&wav1,BYTE*&wav2);
size_tgetTotalLen(BYTE*wav);
intmain(intargc,char*argv[])
{
intdLen;
BYTE*data1=openWaveFile("1.wav");
printWaveFormat(data1);
BYTE*data2=openWaveFile("2.wav");
printWaveFormat(data2);
data1=catWave(data1,data2);
printWaveFormat(data1);
saveWaveFile("3.wav",data1);
return0;
}
BYTE*openWaveFile(constchar*name)
{
size_treadByte;
FILE*fp=fopen(name,"rb");
if(fp==NULL)returnNULL;
RIFF_HEADERfh;
if(fread(&fh,sizeof(fh),1,fp)!=1)
{
fclose(fp);
printf("RiffHeader文件长度错误 ");
returnNULL;
}
if(fh.RiffFormat!=WAVE_SIGN_ID||fh.RiffID!=RIFF_SIGN_ID)
{
fclose(fp);
printf("文件标识符错误ID:%08XFormat:%08X ",fh.RiffID,fh.RiffFormat);
returnNULL;
}
BYTE*r=newBYTE[fh.RiffSize+10],*pr;
if(r==NULL)
{
fclose(fp);
printf("内存申请错误 ");
returnNULL;
}
readByte=fread(r,1,fh.RiffSize-4,fp);
if(readByte!=fh.RiffSize-4)
{
delete[]r;
printf("wave文件长度错误%d%d ",readByte,fh.RiffSize);
returnNULL;
}
fclose(fp);
FMT_BLOCK*fb=(FMT_BLOCK*)r;
if(fb->FmtID!=FMT__SIGN_ID)
{
printf("格式标识符错误或格式大小错误ID:%08X ",fb->FmtID);
delete[]r;
returnNULL;
}
if(fb->wavFormat.FormatTag!=1)
{
delete[]r;
printf("不支持的格式Format:%d ",fb->wavFormat.FormatTag);
returnNULL;
}
pr=r+8+fb->FmtSize;
while(1)
{
UNKNOW_BLOCK*ub=(UNKNOW_BLOCK*)pr;
if(ub->ID==FACT_SIGN_ID)
{
printf("Fact标签length:%d ",ub->Size);
pr+=8+ub->Size;
}
elsebreak;
}
DATA_BLOCK*db=(DATA_BLOCK*)pr;
if(db->DataID!=DATA_SIGN_ID)
{
delete[]r;
printf("数据错误 ");
returnNULL;
}
returnr;
}
BYTE*getWaveData(BYTE*wav,int*dLen)
{
UNKNOW_BLOCK*ub=(UNKNOW_BLOCK*)wav;
while(ub->ID!=DATA_SIGN_ID)
{
switch(ub->ID)
{
caseDATA_SIGN_ID:
break;
caseFMT__SIGN_ID:
caseFACT_SIGN_ID:
ub=(UNKNOW_BLOCK*)(((BYTE*)ub)+ub->Size+8);
break;
default:
printf("错误标签%08X ",ub->ID);
returnNULL;
}
}
DATA_BLOCK*db=(DATA_BLOCK*)ub;
*dLen=db->DataSize;
returndb->Data;
}
size_tgetTotalLen(BYTE*wav)
{
size_tr=0;
UNKNOW_BLOCK*ub=(UNKNOW_BLOCK*)wav;
while(1)
{
switch(ub->ID)
{
caseDATA_SIGN_ID:
r+=ub->Size+8;
returnr;
caseFMT__SIGN_ID:
caseFACT_SIGN_ID:
r+=ub->Size+8;
ub=(UNKNOW_BLOCK*)(((BYTE*)ub)+ub->Size+8);
break;
default:
printf("错误标签%08X ",ub->ID);
returnNULL;
}
}
return-1;
}
voidprintWaveFormat(BYTE*wav)
{
intlen;
getWaveData(wav,&len);
FMT_BLOCK*fb=(FMT_BLOCK*)wav;
printf("Wave格式:PCM ");
printf("通道数量:%d ",fb->wavFormat.Channels);
printf("采样频率:%dHz ",fb->wavFormat.SamplesPerSec);
printf("每秒所需字节数:%d字节 ",fb->wavFormat.AvgBytesPerSec);
printf("数据块对齐单位:%d字节 ",fb->wavFormat.BlockAlign);
printf("每个采样需要的bit数:%dbit ",fb->wavFormat.BitsPerSample);
printf("长度:%.2f秒 ",(double)len/fb->wavFormat.AvgBytesPerSec);
}
BYTE*catWave(BYTE*&wav1,BYTE*&wav2)
{
FMT_BLOCK*fb1=(FMT_BLOCK*)wav2;
constFMT_BLOCK*fb2=(constFMT_BLOCK*)wav2;
if(
fb1->wavFormat.AvgBytesPerSec==fb2->wavFormat.AvgBytesPerSec&&
fb1->wavFormat.BitsPerSample==fb2->wavFormat.BitsPerSample&&
fb1->wavFormat.BlockAlign==fb2->wavFormat.BlockAlign&&
fb1->wavFormat.Channels==fb2->wavFormat.Channels&&
fb1->wavFormat.FormatTag==fb2->wavFormat.FormatTag&&
fb1->wavFormat.SamplesPerSec==fb2->wavFormat.SamplesPerSec)
{
intlen1=getTotalLen(wav1),len2;
BYTE*Data2=getWaveData(wav2,&len2);
BYTE*nD=newBYTE[len1+len2+10];
if(nD==NULL)returnNULL;
memcpy(nD,wav1,len1);
delete[]wav1;
wav1=nD;
BYTE*Data1=getWaveData(wav1,&len1);
DATA_BLOCK*db1=(DATA_BLOCK*)(Data1-8);
db1->DataSize+=len2;
memcpy(Data1+len1,Data2,len2);
returnwav1;
}
returnNULL;
}
intsaveWaveFile(constchar*name,BYTE*wav)
{
FILE*fp=fopen(name,"wb");
if(fp==0)return0;
intlen=getTotalLen(wav);
RIFF_HEADERrh;
rh.RiffFormat=WAVE_SIGN_ID;
rh.RiffID=RIFF_SIGN_ID;
rh.RiffSize=len+4;
fwrite(&rh,sizeof(rh),1,fp);
fwrite(wav,1,len,fp);
fclose(fp);
return1;
}