sybase字符串函数
sybase字符串函数.txt只要你要,只要我有,你还外边转什么阿老实在我身边待着就行了。
听我的就是,问那么多干嘛,我在你身边,你还走错路!跟着我!不能给你幸福是我的错,但谁让你不幸福,我TMD去砍了他sybase字符串函数
文章分类:Java编程
长度和语法分析
datalength(char_expr)
在char_expr中返回字符的长度值,忽略尾空
substring(expression,start,length)
返回部分字符串
right(char_expr,int_expr)
返回char_expr右边的int_expr字符
基本字符串运算
upper(char_expr)
把char_expr转换成大写形式
lower(char_expr)
把char_expr转换成小写形式
space(int_expr)
生成有int_expr个空格的字符串
replicate(char_expr,int_expr)
重复char_expr,int_expr次
stuff(expr1,start,length,expr2)
用expr2代替epxr1中start起始长为length的字符串
reverse(char_expr)
反写char_expr中的文本
ltrim(char_expr)
删除头空
rtrim(char_expr)
删除尾空
格式转换
ascii(char_expr)
返回char_expr中第一个字符的ASCII值
char(int_expr)
把ASCII码转换为字符
str(float_expr[,length[,decimal]])
进行数值型到字符型转换
soundex(char_expr)
返回char_expr的soundex值
difference(char_expr1,char_expr2)
返回表达式soundex值之差
串内搜索
charindex(char_expr,expression)
返回指定char_expr的开始位置,否则为0
patindex("%pattern%",expression)
返回指定样式的开始位置,否则为0
datalength用于确定可变字符串的长度
soundex用于确定字符串是否发音相似
difference返回0-4之间的值,0表示最不相似,4表示最相似通配符
% 匹配任何数量的字符或无字符
_ 匹配任何单个字符(空间占位符)
[] 规定有效范围,或某个"OR"条件
[ABG] A,B,G
[A-C] A,B,C
[A-CE-G] A,B,C,E,F,G
[^ABG] 除了A,B,G
[^A-C] 除了A,B,C
escape子句
用某个转义字符可在搜索字符串时将通配符作为文字来包含。
ANSI-89 SQL标准定义了escape子句指定某个转义字符
缺省情况下,[]来转义某个通配符,例:
select * from test_tab
where description like "%20[%]%"
语法:
like char_expression escape escape_character
例
select * from test_tab
where description like "%20#%%" escape "#"
+ 可用于串接字符
select au_laname+","+au_fname from authors
数学函数
abs(numeric_expr)
返回指定值的绝对值
ceiling(numeric_expr)
返回大于或等于指定值的最小整数
exp(float_expr)
给出指定值的指数值
floor(numeric_expr)
返回小于或等于指定值的最大整数
pi()
返回常数3.1415926
power(numeric_expr,power)
返回numeric_expr的值给power的幂
rand([int_expr])
返回0-1之间的随机浮点数,可指定基值
round(numeric_expr,int_expr)
把数值表达式圆整到int_expr指定的精度
sign(int_expr)
返回正+1,零0或负-1
sqrt(float_expr)
返回指定值的平方根
SQL SERVER支持所有标准的三角函数和其他有用的函数
日期函数
getdate()
返回当前的系统日期和时间
datename(datepart,date_expr)
以字符串形式返回date_expr指定部分的值,转换成合适的名字datepart(datepart,date_expr)
作为整数返回date_expr值的指定部分
datediff(datepart,date_expr1,date_expr2)
返回date_expr2-date_expr1,通过指定的datepart度量
dateadd(datepart,number,date_expr)
返回日期,通过在date_expr上增加指定number的日期部件而产生的
datepart
日期部件缩写值范围
年 yy 1753-9999
季度 qq 1-4
月 mm 1-12
每年中的天 dy 1-366
天 dd 1-31
星期 wk 1-54
星期天 dw 1-7(1=sunday)
小时 hh 0-23
分钟 mi 0-59
秒 ss 0-59
毫秒 ms 0-999
例:
select invoice_no,
datediff(dd,date_shipped,getdate())
from invoices
where balance_due>0
转换函数convert
此函数把值从一种类型改变成另一种类型
convert(datetype [(length)],expression)
select "Advance="+convert(char(12),advance)
from titles
日期转换
convert(datetype[(length)],expression,format)
format指定将日期转换为什么格式,有以下值:
没有世纪有世纪转换字符串中日期格式
0 or 100 mon dd yyy hh:miAM(or PM)
1 101 mm/dd/yy
2 102 yy.mm.dd
3 103 dd/mm/yy
4 104 dd.mm.yy
5 105 dd-mm-yy
6 106 dd mon yy
7 107 mon dd,yy
8 108 hh:mm:ss
9 or 109 mon dd,yyyy hh:mi:ss:mmmAM(or PM)
10 110 mm-dd-yy
11 111 yy/mm/dd
12 112 yymmdd
系统函数
函数定义
访问和安全性信息
host_id() 客户进程的当前主机进程ID号
host_name() 客户进程的当前主计算机名
suser_id(["login_name"]) 用户的SQL Server ID号
suser_name([server_user_id]) 用户的SQL Server登录名
user_id(["name_in_db"]) 用户在数据库中的ID号
user_name([user_id]) 用户在数据库中的名字
user 用户在数据库中的名字
show_role() 用户的当前活动角色
数据库和对象信息
db_id(["db_name"]) 数据库ID号
db_name([db_id]) 数据库名
object_id("objname") 数据库对象ID号
object_name(obj_id]) 数据库对象号
col_name(obj_id,col_id) 对象的栏名
col_length("objname","colname") 栏的长度
index_col("objname",index_id,key#) 已索引的栏名
valid_name(char_expr) 若char_expr不是有效标识符,则返回0
数据函数
datalength(expression) 按字节返回expression的长度
tsequal(timestamp1,timestamp2) 比较时戳值,若时戳值不匹配,则返回出错消息
isnull()
isnull函数用指定的值代替查询栏或合计中的空值
例:。
常用数据库字符串处理函数举例
常⽤数据库字符串处理函数举例1、字符串拼接函数 MySQL:select concat('123','456'); 可以链接多个字符串。
其中只要⼀个为null,则结果为null。
SQLServer:select '123'+'456'; Oracle:select '123'||'456' from dual; 可链接多个。
select concat('123','456') from dual;只能链接两个,只要有⼀个不为null,则结果就不为null。
MySQL:concat_ws(分隔符,字符串1,字符串2,...)函数, 表⽰concat with separator,即有分隔符的字符串连接。
2、字符串截取函数 SQLServer:SUBSTRING(string,start_position,length) 需要注意的是这⾥的start_position是从1开始,不同于数组是从0开始。
Oracle:substr( string, start_position, [ length ] ) substr('⽬标字符串',开始位置,长度),从1开始。
写成0的话效果同1。
MySQL:left(str, length); right(str, length); substring(str, pos); substring(str, pos, len); select substring_index('', '.', 2);截取第⼆个 '.' 之前的所有字符。
得到 'www.example'。
subString起始位为1,如果写为0,返回空⽩字符串。
3、字符串查找函数 MySQL:INSTR(str,substr); 返回⼦串substr在字符串str中的第⼀个出现的位置。
SQL常用字符串函数
SQL常用字符串函数一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。
在ASCII()函数中,纯数字的字符串可不用'’括起来,但含其它字符的字符串必须用'’括起来使用,否则会出错。
2、CHAR()将ASCII 码转换为字符。
如果没有输入0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。
3、LOWER()和UPPER()LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。
4、STR()把数值型数据转换为字符型数据。
STR (<float_expression>[,length[, <decimal>]])length 指定返回的字符串的长度,decimal 指定返回的小数位数。
如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;当length 小于小数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数小于length ,左边补足空格。
二、去空格函数1、LTRIM() 把字符串头部的空格去掉。
2、RTRIM() 把字符串尾部的空格去掉。
三、取子串函数1、left()LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 个字符。
2、RIGHT()RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 个字符。
3、SUBSTRING()SUBSTRING (<expression>, <starting_ position>, length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。
MSSQL系列(三):系统函数之字符串函数
MSSQL系列(三):系统函数之字符串函数1.ascii() :返回ascii码--返回ascii码select ascii('a')go2.char() :返回ascii对应的字符--返回ascii对应的字符select char(65)go3.charindex() :返回字符串起始位置--返回字符串起始位置select charindex('s','mssql')select charindex('s','mssql',2)select charindex('s','mssql',3)select charindex('s','mssql',4)go4.difference() :返回soundex值之差--返回soundex值之差select difference('mssql','mssql')select difference('mssql','mysql')go5.left() :取左边指定个数的字符--取左边指定个数的字符select left('mssql',1)select left('mssql',6)go6.len() :字符个数--字符个数select len('mssql')select len('你好')go7.lower() :⼤写字母转⼩写字母--⼤写字母转⼩写字母select lower('MSSQL')go8.ltrim() :清除左边字符的空格--清除左边字符的空格select ltrim(' mssql')go9.nchar() :返回unicode值--返回unicode值select nchar(63)select nchar(32)go10.patindex() :返回表达式模式的字符串的起始位置--返回表达式模式的字符串的起始位置select patindex('%s%','mssql')select patindex('s','mssql')select patindex('%s[a-z]__','mssql')go11.quotename() :返回带有分隔符的 unicode 字符串,主要作⽤就是在sql语句中,给列名、表名等加个[]、'--返回带有分隔符的 unicode 字符串,主要作⽤就是在SQL语句中,给列名、表名等加个[]、’’select quotename('mssql','[]')select quotename('mssql','''')go12.replace() :替换字符串--替换字符串select replace('mysql','y','s')select replace(' mssql ','','')go13.replicate() :按指定次数重复字符表达式--按指定次数重复字符表达式select replicate('mssql',2)select replicate('你好!',3)go14.reverse() :返回字符表达式的逆向表达式--返回字符表达式的逆向表达式select reverse('你好!')select reverse('mssql')go15.right() :取右边指定个数的字符--取右边指定个数的字符select right('mssql',1)select right('你好!',2)go16.rtrim() :清除右边字符的空格--清除右边字符的空格select rtrim(' mssql ')go17.soundex() :返回由四个字符表⽰的soundex代码--返回由四个字符表⽰的soundex代码select soundex('mssql')go18.space() :返回由重复空格组成的字符串--返回由重复空格组成的字符串select space(2)go19.str() :将数值表达式转换字符表达式--将数值表达式转换字符表达式select str(3,1,3)select str(23,1,5)select str(23.34,8,3)go20.string_split() :分隔字符串,返回表,列名为value--分隔字符串,返回表,列名为valueselect value from string_split('mssql-mysql-oracle','-')go21.stuff() :在⼀个字符串中,删除指定长度的字符,并在该位置插⼊⼀个新的字符串--在⼀个字符串中,删除指定长度的字符,并在该位置插⼊⼀个新的字符串select stuff('mssql',1,2,'my')go22.substring() :截取指定的字符串--截取指定的字符串select substring('mssql',3,3)go23.unicode() :返回表达式第⼀个字符unicode的整数值--返回表达式第⼀个字符unicode的整数值select unicode('A')select unicode('12456')go24.upper() :⼩写字母转⼤写字母--⼩写字母转⼤写字母select upper('mssql')go25.trim() :去除左右两边空格,注意2017以下不⽀持--去除左右两边空格select trim(' mssql ')go26.concat_ws() :将分隔符的字符串连接--将分隔符的字符串连接select concat_ws(',','mssql','mysql')go。
Sybase日期函数详解
number:间隔数(正数为向后+N,负数为向前-N)
date:当前日期或指定日期
查询当前日期起,以时、分、秒、天、周、月、季、年为间隔的日期
时:select convert(char(8),dateadd(hour,1,getdate()),112)
上月第一天:
select dateadd(mm,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01)))
上月最后一天:
select dateadd(dd,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01)))
--整数时间
select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646
select convert(char,getdate(),102) -- '2003.11.12'
select convert(char,getdate(),103) -- '27/09/2003'
select convert(char,getdate(),104) -- '27.09.2003'
SYBASE数据库字符集问题
SYBASE数据库字符集问题最近做一个项目,需要使用SYBASE数据库。
基本功能就是从SYBASE中读取信息在页面显示。
页面字符集是UTF-8SYBASE默认字符集是 ENCGB本来功能是正常的。
最近发现一个问题,在数据库中保存一些生僻字后,如果直接用isql在SYBASE数据库里写是可以正常保存的。
例如:喆,在数据库里保存是正常的。
但是通过JDBC连接数据库,读出来的却是“?”连接数据库的URL是这样写的。
jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936普通汉字都可以正常的进行读写,只有那些生僻字无法显示。
SYBASE数据库中也添加了cp936字符集。
但是还是无法正常读写生僻汉字。
数据库的默认字符集不允许改为“CP936”,所以只能在连接字符串上添加字符集CP936大家有没有遇到过这种问题。
通过JDBC连接SYBASE获取的结果是什么字符集的呢?可以在读写的时候对字符串的编码进行转换吗?问题补充dong706gmail 写道你的问题我也碰到过,一开始设置的连接字符集是utf-8,结果读取不了生僻字。
把连接字符集设置为 gb18030 就可以了。
String url ="jdbc:sybase:Tds:10.25.36.21:4100?charset=gb18030";连接字符设置为GB18030后,直接报错ava.sql.SQLException: JZ0I5: 指定了一个无法识别的CHARSET 属性: gb18030。
atcom.sybase.jdbc3.jdbc.ErrorMessage.raiseError(ErrorMessage.jav a:552)at com.sybase.jdbc3.tds.Tds.setCharConvert(Tds.java:3208) at com.sybase.jdbc3.tds.Tds.setCharConvert(Tds.java:3158) at com.sybase.jdbc3.tds.Tds.login(Tds.java:413)atcom.sybase.jdbc3.jdbc.SybConnection.tryLogin(SybConnection.j ava:247)atcom.sybase.jdbc3.jdbc.SybConnection.regularConnect(SybConn ection.java。
sybase ifnull函数用法
sybase ifnull函数用法Sybase是一种关系型数据库管理系统,常用于企业级的数据存储、处理和查询。
ifnull函数是Sybase中一个非常重要的函数之一,它的作用是用来判断一个值是否为空,如果为空则返回默认值,如果不为空则返回该值本身。
ifnull函数的基本语法为:ifnull(expression1, expression2)expression1是需要判断是否为空的值,expression2是如果expression1为空需要返回的默认值。
如果expression1不为空,则返回expression1本身。
如果expression1为空,则ifnull函数会返回expression2的值,而如果expression1不为空,则ifnull函数会返回expression1的值。
那么ifnull函数怎么使用呢?我们来看一些例子:例子1:判断一个数值是否为空,为空则返回0```SELECT IFNULL(NULL, 0);```执行结果为:``````上面的例子中,我们传入了一个空值NULL作为第一个参数,而0作为第二个参数,因为第一个参数为空,所以ifnull函数返回了0。
例子2:从数据表中查询出某个字段的值,如果为空则返回"未知"```SELECT IFNULL(name, '未知') as name FROM students;```执行结果为:```name-------小明小花未知小刚小兰```上面的例子中,我们指定了一个表名为students,并查询了该表中的name字段,通过ifnull函数判断name字段是否为空,如果为空则返回"未知",否则返回该字段本身。
例子3:计算两个数值之和,如果其中有一个数值为空则返回另一个数值本身```SELECT IFNULL(num1, 0) + IFNULL(num2, 0) as sum FROM nums;```假设nums表中的数据如下:```num1 num2----- -----1 NULL3 4NULL 2```执行结果为:```sum-----172```上面的例子中,我们查询了nums表中的num1和num2字段的值,并使用ifnull函数来判断它们是否为空,如果为空则返回0,最后将两个值相加得到sum字段的值。
Sybase 函数用法大全
Sybase 函数用法大全一、字符串函数:长度和语法分析datalength(char_expr) 在char_expr中返回字符的长度值,忽略尾空substring(expression,start,length) 返回部分字符串right(char_expr,int_expr) 返回char_expr右边的int_expr字符基本字符串运算upper(char_expr) 把char_expr转换成大写形式lower(char_expr) 把char_expr转换成小写形式space(int_expr) 生成有int_expr个空格的字符串replicate(char_expr,int_expr) 重复char_expr,int_expr次stuff(expr1,start,length,expr2) 用expr2代替epxr1中start起始长为length的字符串reverse(char_expr) 反写char_expr中的文本ltrim(char_expr) 删除头空rtrim(char_expr) 删除尾空格式转换ascii(char_expr) 返回char_expr中第一个字符的ASCII值char(int_expr) 把ASCII码转换为字符str(float_expr[,length[,decimal]]) 进行数值型到字符型转换soundex(char_expr) 返回char_expr的soundex值difference(char_expr1,char_expr2) 返回表达式soundex值之差串内搜索charindex(char_expr,expression) 返回指定char_expr的开始位置,否则为0 patindex("%pattern%",expression) 返回指定样式的开始位置,否则为0 datalength用于确定可变字符串的长度soundex用于确定字符串是否发音相似difference返回0-4之间的值,0表示最不相似,4表示最相似通配符% 匹配任何数量的字符或无字符_ 匹配任何单个字符(空间占位符)[] 规定有效范围,或某个"OR"条件[ABG] A,B,G[A-C] A,B,C[A-CE-G] A,B,C,E,F,G[^ABG] 除了A,B,G[^A-C] 除了A,B,Cescape子句用某个转义字符可在搜索字符串时将通配符作为文字来包含。
Sybase 基础知识及操作解读
新建数据库仅用于装入数据库的转储备份 (不需清页,建库快);
⑵ 建库者(DBO): SA:SA可将DB所有权转让。(用sp_changedbowner) master、model、tempdb、sybsecurity库的所有权不能转让。 SA授权的用户: 用 grant create database to 用户名。 建议SA集中管理DB的创建。 ⑶ 最多可管理32767个数据库 ⑷ 如未指定位置和大小,DB建在缺省设备上,大小为max{model库大小, database size参数值}
先showserver 再kill pid
段(segment)
是数据库设备上磁盘空间的逻辑组合,设备与段的关系是多
对多关系。一个数据库设备一般可拥有多达192 个段,一个段也可 使用最多255个数据库设备。 数据库创建后会初始创建三个段 system:存储数据库的系统表。 logsegment:存储数据库的事务日志。 default:存储数据库中没有指定片段存放的去他数据库对象。
设备管理要考虑的问题
恢复:将磁盘镜象或另外的设备上管理日志可以 在系统磁盘损坏是提供完全的恢复。
性能:将日志和数据库对象放置在不同的设备上 可以提高系统的整体性能
设备信息查询
Master库 sysusages sysdevices
用户库 存储过程 syssegments sysindexes sp_helpdevice
修改数据库
命令格式:
alter database 数据库名 [on { default | 数据库设备名 } [=大小] (以MB为单位) [,数据库设备名 [=大小]]...] [log on 数据库设备名 [=大小] [,数据库设备名 [=大小]]...] [with override]
人大金仓数据库常用函数
人大金仓数据库常用函数人大金仓数据库是一款非常常用的关系型数据库管理系统,它支持丰富的函数和语法,可以满足用户的各种数据处理需求。
下面列举一些人大金仓数据库中常用的函数及其用法:1. 字符串函数:- LEN(str): 返回字符串的长度。
- LEFT(str, n): 返回字符串的前n个字符。
- RIGHT(str, n): 返回字符串的后n个字符。
- UPPER(str): 将字符串转换为大写。
- LOWER(str): 将字符串转换为小写。
- REPLACE(str, old, new): 将字符串中的old字符串替换为new字符串。
- CONCAT(str1, str2): 将两个字符串连接起来。
2. 数值函数:- ABS(num): 返回num的绝对值。
- ROUND(num, n): 将num四舍五入到小数点后n位。
- CEIL(num): 返回大于等于num的最小整数。
- FLOOR(num): 返回小于等于num的最大整数。
- MOD(num1, num2): 返回num1除以num2的余数。
- SQRT(num): 返回num的平方根。
3. 日期函数:- NOW(): 返回当前日期和时间。
- DATEADD(date, n, interval): 在date上增加n个interval。
- DATEDIFF(date1, date2): 返回date1和date2之间的天数差。
- DAY(date): 返回date的天。
- MONTH(date): 返回date的月。
- YEAR(date): 返回date的年。
4. 聚合函数:- COUNT(expr): 返回查询结果的行数。
- SUM(expr): 返回expr的和。
- AVG(expr): 返回expr的平均值。
- MAX(expr): 返回expr的最大值。
- MIN(expr): 返回expr的最小值。
5. 条件函数:- IF(condition, value1, value2): 如果condition为真,则返回value1,否则返回value2。
日常工作中使用PowerBuilder和sybase遇到的问题
日常工作中使用PowerBuilder和sybase遇到的问题(例子中的数据库名称为yanglao)1.在PowerBuilder使用数据管道在sybase中进行数据导入导出时,使用数据管道是最方便的一种方法,但也有缺点,数据量过大时,执行效率慢,甚至有时一张表需要几十个小时。
如果Database Devices创建的不合理,数据库文件和日志文件不够大,在使用数据管道时,在途会停止操作。
如果出现这种情况,先查看一下数据库的log space,如下图:看一下Free(MB)是否有剩余,如果用完需要清楚日志。
在SQL Advantage中执行下面语句:dump transaction yanglao with no_log附数据管道的报错信息(百度中可搜索)Start()函数返回一个integer值时数据管道的运行是否成功,返回值的意义为:1 函数执行成功-1 打不开数据管道-2 列数太多-3 要创建的表已经存在-4 要增加数据的表不存在-5 未建立与数据库的连接-6 参数错误-7 列不匹配-8 访问源数据库的sql语句致命错误-9 访问目标数据库的sql语句致命错误-10 已经达到指定的最大错误数-12 不正确的表达法-13 需要关键字、但未指定关键字-15 数据管道已经在运行-16 源数据库出错-17 目标数据库出错-18 目标数据库处于只读状态,不能写入数据2.小写字符替换成大写字符update table1 set sfz=str_replace(sfz,'x','X')str_replace(string要被替换的字符串, string用于替换的字符串,string替换成的字符串) 3.在sybase(版本sybase12.5)中创建database device后,找不到设备业务情形:创建database后,重新启动数据库系统,在database device管理中找不到该设备。
