sql 语句把字符串把08sql增加字段语句为09sql增加字段语句为10

数据库表info(id INT,value TEXT),如果需要将一个字符串变量(该字符串变量通常会有几千个字符,而且里面会有很多的单/双引号)插入到数据库中,则sql语句该怎么写呢?如果按照通常的写法:
String sql = "INSERT INTO info (value) VALUES('" + value + "')";(value是字符串变量)
一旦解析时遇到value变量中的单引号,就会引发sql语句的歧义,有没有什么好的解决办法呢?
问题补充:
redstarofsleep 写道将这个字符串中的所有单引号转意为\'
谢谢两位的回复,用转义的确可以解决该问题,但是考虑到这个字符串变量有点长,而且我可能要做很多条数据的插入,如果每插入一条就把该字符串变量处理一下(转义),会不会影响性能?有没有什么办法把该字符串‘封装’一下,整体插入?
采纳的答案
直接用jdbc?
如果是这样为什么不考虑用预编译
使用preparedStatement处理,不要拼接字符串,可以解决你的问题,还可以解决sql注入安全问题!
blueBleief说的对。
处理value这个字符串变量时,遇到单引号(')用replace替换成两个单引号('')
其实整体转义应该也不会影响太多的性能,用个正则一下就完成了。
还有个办法:单引号是数据库默认的字符串的边界符,你只要修改就可以了,就是把数据库中表示字符串起始与结束改用别的符号,Oracle里是可以改的,Mysql你查一下。
将这个字符串中的所有单引号转意为\'
转义一下看看.就是要插入单引号的地方用\'
已解决问题
未解决问题Oracle&Sql&中常用字符串处理函数
小写字母转大写字母:upper();
大写字母转小写字母:lower();
字符串截取函数:substr(str,a,b);
a,b为整数,str为字符串,
截取字符串str从a开始的b位字符,当a为-1时从字符串右边至左开始查找,
例:select substr('abcd',2,2)
字符串连接:||
例:select 'ab'||'cd'
字符查找函数:instr(str,a,b)
a为要查找的字符,b为整数,str为字符串,
查找字符串str中a第一次出现的位置,b表示从str的第几位开始查找,可以缺省,
例:select instr('abcdce','c')
字符替换函数:replace(str,a,b)
str为字符串,a为被替换的字符,b为要替换成的字符,
例:select replace('abcdce','bc','test') from dual
--返回atestdce
SQL中的单记录函数
返回与指定的字符对应的十进制数;
SQL& select ascii('A') A,ascii('a') a,ascii('0')
zero,ascii(' ')
--------- --------- --------- ---------
给出整数,返回对应的字符;
SQL& select chr(54740) zhao,chr(65) chr65 from
连接两个字符串;
SQL& select
concat('010-','')||'转23'& 高乾竞电话 from
高乾竞电话
----------------
返回字符串并将字符串的第一个字母变为大写;
SQL& select initcap('smith')
5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
被搜索的字符串
希望搜索的字符串
搜索的开始位置,默认为1
出现的位置,默认为1
SQL& select instr('oracle traning','ra',1,2)
返回字符串的长度;
SQL& select
name,length(name),addr,length(addr),sal,length(to_char(sal)) from
gao.nchar_
NAME&& LENGTH(NAME)
ADDR&&&&&&&&&&&&
LENGTH(ADDR)&&&&&&
SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ ---------
--------------------
高乾竞&&&&&&&&&&&
北京市海锭区&&&&&&&&&&&&&&&
9999.99&&&&&&&&&&&&&&&&&&&
返回字符串,并将所有的字符小写
SQL& select lower('AaBbCcDd')AaBbCcD
返回字符串,并将所有的字符大写
SQL& select upper('AaBbCcDd')
9.RPAD和LPAD(粘贴字符)
RPAD& 在列的右边粘贴字符
LPAD& 在列的左边粘贴字符
SQL& select lpad(rpad('gao',10,'*'),17,'*')from
LPAD(RPAD('GAO',1
-----------------
*******gao*******
不够字符则用*来填满
10.LTRIM和RTRIM
LTRIM& 删除左边出现的字符串
RTRIM& 删除右边出现的字符串
SQL& select
ltrim(rtrim('&& gao qian
jing&& ',' '),' ')
LTRIM(RTRIM('
-------------
gao qian jing
11.SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL& select substr('',3,8)
12.REPLACE('string','s1','s2')
string&& 希望被替换的字符或变量
被替换的字符串
要替换的字符串
SQL& select replace('he love you','he','i') from
REPLACE('H
----------
i love you
13.SOUNDEX
返回一个与给定的字符串读音相同的字符串
SQL& create table table1(xm varchar(8));
SQL& insert into table1 values('weather');
SQL& insert into table1 values('wether');
SQL& insert into table1 values('gao');
SQL& select xm from table1 where
soundex(xm)=soundex('weather');
14.TRIM('s' from 'string')
LEADING&& 剪掉前面的字符
TRAILING& 剪掉后面的字符
如果不指定,默认为空格符
返回指定值的绝对值
SQL& select abs(100),abs(-100)
&ABS(100) ABS(-100)
--------- ---------
给出反余弦的值
SQL& select acos(-1)
给出反正弦的值
SQL& select asin(0.5)
返回一个数字的反正切值
SQL& select atan(1)
返回大于或等于给出数字的最小整数
SQL& select ceil(3.1415927)
CEIL(3.1415927)
---------------
&&&&&&&&&&&&&
返回一个给定数字的余弦
SQL& select cos(-3.1415927)
COS(-3.1415927)
---------------
&&&&&&&&&&&&
返回一个数字反余弦值
SQL& select cosh(20)
返回一个数字e的n次方根
SQL& select exp(2),exp(1)
--------- ---------
7..7182818
对给定的数字取整数
SQL& select floor(2345.67)
FLOOR(2345.67)
--------------
返回一个数字的对数值
SQL& select ln(1),ln(2),ln(2.7182818)
LN(2) LN(2.7182818)
--------- --------- -------------
25.LOG(n1,n2)
返回一个以n1为底n2的对数
SQL& select log(2,1),log(2,4)
&LOG(2,1)& LOG(2,4)
--------- ---------
26.MOD(n1,n2)
返回一个n1除以n2的余数
SQL& select mod(10,3),mod(3,3),mod(2,3) from
MOD(10,3)& MOD(3,3)&
--------- --------- ---------
返回n1的n2次方根
SQL& select power(2,10),power(3,3)
POWER(2,10) POWER(3,3)
----------- ----------
1024&&&&&&&&
28.ROUND和TRUNC
按照指定的精度进行舍入
SQL& select
round(55.5),round(-55.4),trunc(55.5),trunc(-55.5)
ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
----------- ------------ ----------- ------------
56&&&&&&&&&
-55&&&&&&&&&
55&&&&&&&&&
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
SQL& select sign(123),sign(-100),sign(0) from
SIGN(123) SIGN(-100)&&
--------- ---------- ---------
-1&&&&&&&&
返回一个数字的正弦值
SQL& select sin(1.57079)
SIN(1.57079)
------------
&&&&&&&&&&
返回双曲正弦的值
SQL& select sin(20),sinh(20)
& SIN(20)& SINH(20)
--------- ---------
返回数字n的根
SQL& select sqrt(64),sqrt(10)
&SQRT(64)& SQRT(10)
--------- ---------
8 3.1622777
返回数字的正切值
SQL& select tan(20),tan(10)
& TAN(20)&&
--------- ---------
返回数字n的双曲正切值
SQL& select tanh(20),tan(20)
&TANH(20)&&
--------- ---------
1 2.2371609
按照指定的精度截取一个数
SQL& select trunc(124.1666,-2)
trunc1,trunc(124.16666,2)
TRUNC(124.16666,2)
--------- ------------------
100&&&&&&&&&&&&
36.ADD_MONTHS
增加或减去月份
SQL& select
to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from
SQL& select
to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from
37.LAST_DAY
返回日期的最后一天
SQL& select
to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd')
TO_CHAR(SY TO_CHAR((S
---------- ----------
SQL& select last_day(sysdate)
LAST_DAY(S
----------
31-5月 -04
38.MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
SQL& select
months_between('19-12月-1999','19-3月-1999') mon_between from
MON_BETWEEN
-----------
SQL&selectmonths_between(to_date('','yyyy.mm.dd'),to_date('','yyyy.mm.dd'))
39.NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间
SQL& select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss')
bj_time,to_char(new_time
(sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from
BJ_TIME&&&&&&&&&&&&
LOS_ANGLES
------------------- -------------------
40.NEXT_DAY(date,'day')
给出日期date和星期x之后计算下一个星期的日期
SQL& select next_day('18-5月-2001','星期五') next_day
----------
25-5月 -01
41.SYSDATE
用来得到系统的当前日期
SQL& select to_char(sysdate,'dd-mm-yyyy day') from
TO_CHAR(SYSDATE,'
-----------------
09-05-2004 星期日
trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
SQL& select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd
hh24:mi:ss') hh,
to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from
HH&&&&&&&&&&&&&&&&&
------------------- -------------------
42.CHARTOROWID
将字符数据类型转换为ROWID类型
SQL& select rowid,rowidtochar(rowid),ename from
ROWID&&&&&&&&&&&&&
ROWIDTOCHAR(ROWID) ENAME
------------------ ------------------ ----------
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
43.CONVERT(c,dset,sset)
将源字符串 sset从一个语言字符集转换到另一个目的dset字符集
SQL& select convert('strutz','we8hp','f7dec')
"conversion"
44.HEXTORAW
将一个十六进制构成的字符串转换为二进制
45.RAWTOHEXT
将一个二进制构成的字符串转换为十六进制
46.ROWIDTOCHAR
将ROWID数据类型转换为字符类型
47.TO_CHAR(date,'format')
SQL& select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss')
TO_CHAR(SYSDATE,'YY
-------------------
48.TO_DATE(string,'format')
将字符串转化为ORACLE中的一个日期
49.TO_MULTI_BYTE
将字符串中的单字节字符转化为多字节字符
SQL&& select to_multi_byte('高')
50.TO_NUMBER
将给出的字符转换为数字
SQL& select to_number('1999')
51.BFILENAME(dir,file)
指定一个外部二进制文件
SQL&insert into file_tb1
values(bfilename('lob_dir1','image1.gif'));
52.CONVERT('x','desc','source')
将x字段或变量的源source转换为desc
SQL& select
sid,serial#,username,decode(command,
& 2& 0,'none',
& 3& 2,'insert',
& 5& 'select',
& 6& 6,'update',
& 7& 7,'delete',
& 8& 8,'drop',
& 9& 'other')
cmd& from v$session where type!='background';
SID&& SERIAL#
USERNAME&&&&&&&&&&&&&&&&&&&&&&
--------- --------- ------------------------------ ------
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1275&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1275&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
GAO&&&&&&&&&&&&&&&&&&&&&&&&&&&
GAO&&&&&&&&&&&&&&&&&&&&&&&&&&&
53.DUMP(s,fmt,start,length)
DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值
SQL& col global_name for a30
SQL& col dump_string for a50
SQL& set lin 200
SQL& select global_name,dump(global_name,)
dump_string from global_
GLOBAL_NAME&&&&&&&&&&&&&&&&&&&
DUMP_STRING
------------------------------
--------------------------------------------------
ORACLE.WORLD&&&&&&&&&&&&&&&&&&
Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D
54.EMPTY_BLOB()和EMPTY_CLOB()
这两个函数都是用来对大数据类型字段进行初始化操作的函数
55.GREATEST
返回一组表达式中的最大值,即比较字符的编码大小.
SQL& select greatest('AA','AB','AC')
SQL& select greatest('啊','安','天')
返回一组表达式中的最小值
SQL& select least('啊','安','天')
返回标识当前用户的唯一整数
SQL& show user
USER 为"GAO"
SQL& select username,user_id from dba_users where
USERNAME&&&&&&&&&&&&&&&&&&&&&&&&
------------------------------ ---------
GAO&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
返回当前用户的名字
SQL& select user from&
------------------------------
59.USEREVN
返回当前用户环境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA& 查看当前用户是否是DBA如果是则返回true
SQL& select userenv('isdba')
SQL& select userenv('isdba')
返回会话标志
SQL& select userenv('sessionid')
USERENV('SESSIONID')
--------------------
&&&&&&&&&&&&&&&&
返回会话人口标志
SQL& select userenv('entryid')
USERENV('ENTRYID')
------------------
&&&&&&&&&&&&&&&&
返回当前INSTANCE的标志
SQL& select userenv('instance')
USERENV('INSTANCE')
-------------------
&&&&&&&&&&&&&&&&&
返回当前环境变量
SQL& select userenv('language')
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
返回当前环境的语言的缩写
SQL& select userenv('lang')
USERENV('LANG')
----------------------------------------------------
返回用户的终端或机器的标志
SQL& select userenv('terminal')
USERENV('TERMINA
----------------
返回X的大小(字节)数
SQL& select vsize(user),
VSIZE(USER) USER
----------- ------------------------------
60.AVG(DISTINCT|ALL)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQLWKS& create table table3(xm varchar(8),sal
number(7,2));
语句已处理。
SQLWKS&& insert into table3
values('gao',1111.11);
SQLWKS&& insert into table3
values('gao',1111.11);
SQLWKS&& insert into table3
values('zhu',5555.55);
SQL& select avg(distinct sal) from
gao.table3;
AVG(DISTINCTSAL)
----------------
SQL& select avg(all sal) from gao.table3;
AVG(ALLSAL)
-----------
&&& 2592.59
61.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL& select max(distinct sal) from scott.
MAX(DISTINCTSAL)
----------------
&&&&&&&&&&&
62.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL& select min(all sal) from gao.table3;
MIN(ALLSAL)
-----------
&&& 1111.11
63.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
SQL& select stddev(sal) from scott.
STDDEV(SAL)
-----------
SQL& select stddev(distinct sal) from
STDDEV(DISTINCTSAL)
-------------------
&&&&&&&&&&
64.VARIANCE(DISTINCT|ALL)
SQL& select variance(sal) from scott.
VARIANCE(SAL)
-------------
65.GROUP BY
主要用来对一组数进行统计
SQL& select deptno,count(*),sum(sal) from scott.emp
&& DEPTNO&
COUNT(*)& SUM(SAL)
--------- --------- ---------
10&&&&&&&&
20&&&&&&&&
30&&&&&&&&
对分组统计再加限制条件
SQL& select deptno,count(*),sum(sal) from scott.emp
group by deptno having count(*)&=5;
&& DEPTNO&
COUNT(*)& SUM(SAL)
--------- --------- ---------
20&&&&&&&&
30&&&&&&&&
SQL& select deptno,count(*),sum(sal) from scott.emp
having count(*)&=5
&& DEPTNO&
COUNT(*)& SUM(SAL)
--------- --------- ---------
20&&&&&&&&
30&&&&&&&&
67.ORDER BY
用于对查询到的结果进行排序输出
SQL& select deptno,ename,sal from scott.emp order by
ENAME&&&&&&&&&&&
--------- ---------- ---------
KING&&&&&&&&&&&
CLARK&&&&&&&&&&
MILLER&&&&&&&&&
SCOTT&&&&&&&&&&
FORD&&&&&&&&&&&
JONES&&&&&&&&&&
ADAMS&&&&&&&&&&
SMITH&&&&&&&&&&&
BLAKE&&&&&&&&&&
ALLEN&&&&&&&&&&
TURNER&&&&&&&&&
WARD&&&&&&&&&&&
MARTIN&&&&&&&&&
JAMES&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。sql中 转换getdate() 结果为这种格式的字符串 如何写语句呢?_百度知道
sql中 转换getdate() 结果为这种格式的字符串 如何写语句呢?
貌似这个写不行cast(getdate() as varchar(10))
提问者采纳
SELECT CONVERT(varchar(100), GETDATE(), 23):
用cast不可以啊
cast(stuff(stuff(stuff('38',9,0,' ' ),12,0,':'),15,0,':') as datetime) cast貌似要转很多次哦!
提问者评价
SELECT CONVERT(varchar(100), GETDATE(), 120):
其他类似问题
为您推荐:
getdate的相关知识
其他2条回答
select convert(varchar(11),cast(getdate() as smalldatetime),120)
select convert(varchar(11), GETDATE(),120) 这样写有什么缺点
我是这么用的,不知道有什么缺点哦
to_date(GetDATE(),'yyyy-mm-dd')
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1114人阅读
ALTER PROCEDURE [dbo].[usp_visit_detail]
(@siteid BIGINT,
&@Startime VARCHAR(15),
&@Endtime &VARCHAR(15),
&@Aflag &INT = 10, & & & & & & & & & & & & & & & & & &--初始值为10,非10,则表示有传入参数
&@Area & VARCHAR(20) = 'N', & & & & & & & --&--初始值为N,非N,则表示有传入参数
&@Nflag &INT = 10, & & & & & & & & & & & & & & & &-初始值为10,非10,则表示有传入参数
&@VALUE1 varchar(20) = 'N' & & & & & & &--初始值为N,非N,则表示有传入参数
&DECLARE @AFlag0 & & &varchar(50),
&& & & & &@NFlag0 & & &varchar(50),&
&& & & & &--@Sqlstr0 & & varchar(600),
&& & & & &@Sqlstr & & &varchar(2000)&
&& & & & &
&&IF @AFlag = 10&
&& &SET @AFlag0 = ''
&& &SET @AFlag0 = ' AND AFlag=' + CAST(@AFlag AS VARCHAR)&
&&IF @Area = 'N'&
&& &SET @Area = ''
&& &SET @Area = ' AND province=' + '''' + @Area + ''''
&&IF @NFlag = 10&
&& &SET @NFlag0 = ''
&& &SET @NFlag0 = ' AND NFlag=' + CAST(@NFlag AS VARCHAR) & & & & & & & & & & &&
&&IF @Value1 = 'N'&
&& &SET @Value1 = ''
&& &SET @Value1 = ' AND value1=' + '''' + @Value1 + '''' &&
&& SET @Sqlstr = &'SELECT & & a.Intime, c.Visitornm, c.Vcount, (CASE WHEN a.value2 = '+''''+''''+' THEN a.value1 + '+''''+''''+' WHEN a.value2 != '+''''+''''+' THEN a.value1 +'+ ''''+'-'+''''+' + a.value2 END) AS source0,&
&& DATEDIFF(ms,a.Intime, a.Outtime) AS vtime, a.Pages, a.Rev1, dbo.GET_URL(a.SiteID, a.InURLID) AS inrul, dbo.GET_URL(a.SiteID, a.OutURLID) AS outrul
FROM dbo.F_Pages_T AS a INNER JOIN &(SELECT & & VisitorID, MAX(ID) AS id FROM dbo.F_Pages_T WHERE SiteID = '+''''+CONVERT(VARCHAR,@siteid)+''''+ 'AND day0&= '+@startime+' AND day0&= ' +@endtime+@aflag0
+@area + & @Nflag0+ @Value1 & +' GROUP BY VisitorID) AS b ON a.ID = b.id LEFT OUTER JOIN dbo.F_Visit AS c ON a.VisitorID = c.VisitorID'
&& & & & & & & & & & &
&& PRINT @sqlstr
&& EXEC (@sqlstr)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16855次
排名:千里之外
原创:22篇
(1)(1)(1)(2)(2)(2)(10)(9)}

我要回帖

更多关于 sql语句截取字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信