这段时间学习了一下JAVA和JAVASCRIPT的正则表达式,没想到立刻又要处理sql的正则表达式了(可能不需要用到正则表达式)。
之前有个系统模块里面,出了点差错,忘记在页面输入的内容(用textarea)输入的,把\r\n替换为<p>了。现在已经输入了好多条记录了。于是想用replace在服务器端的数据库里面,来批量全部把列里面的\r\n,全部替换成<p>。结果操作不成功。
后来试了一下,发现还挺麻烦的。
搜索的时候,语句
select * from tableName where columnName like '%AAA%'
是可以找到内容出来的,但
select * from tableName where columnName like '%\n%' or columnName like '%\r%'
却找不到内容出来,要改为
select * from tableName where columnName like '%[\n]%' or columnName like '%[\r]%'
才能找到。
1、所以请问:是不是所有特殊字符都必须这样,才能进行搜索呢?另外还有一个可用于搜索的关键词,charIndex函数。语句如下:
select * from tableName where charIndex('[\r]', columnName)>0 --0行,不论有没有[]都是是0行
2、请问charIndex()到底能否用于特殊字符的搜索?3、用replace()函数进行替换的时候,语句如下:
update talbeName set columnName=replace(columnName, '\n','<br>') where columnName like '%[\n]%'
不论有没有[],都不能成功。
请问应该如何写呢?谢谢。
之前有个系统模块里面,出了点差错,忘记在页面输入的内容(用textarea)输入的,把\r\n替换为<p>了。现在已经输入了好多条记录了。于是想用replace在服务器端的数据库里面,来批量全部把列里面的\r\n,全部替换成<p>。结果操作不成功。
后来试了一下,发现还挺麻烦的。
搜索的时候,语句
select * from tableName where columnName like '%AAA%'
是可以找到内容出来的,但
select * from tableName where columnName like '%\n%' or columnName like '%\r%'
却找不到内容出来,要改为
select * from tableName where columnName like '%[\n]%' or columnName like '%[\r]%'
才能找到。
1、所以请问:是不是所有特殊字符都必须这样,才能进行搜索呢?另外还有一个可用于搜索的关键词,charIndex函数。语句如下:
select * from tableName where charIndex('[\r]', columnName)>0 --0行,不论有没有[]都是是0行
2、请问charIndex()到底能否用于特殊字符的搜索?3、用replace()函数进行替换的时候,语句如下:
update talbeName set columnName=replace(columnName, '\n','<br>') where columnName like '%[\n]%'
不论有没有[],都不能成功。
请问应该如何写呢?谢谢。
既然有同学提醒,那么顺便问问,如果查找\r\n连在一起的组合,应该怎样写?SQL正则表达式的正则又是怎写的?很奇怪,在页面的textarea输入了回车和换行,在JAVA端接收,可以显示是收到了“\r\n”的,但怎么在数据库的列里面,多数的内容,都是\n和\r分开的,都是要么只有\r,要么只有\n的?
create table tablename(columnname varchar(30))
insert into tablename select 'asdf\r\nasdfwe'
go
select * from tablename where columnname like '%\r\n%'
/*
columnname
------------------------------
asdf\r\nasdfwe(1 行受影响)*/
update tablename set columnname=replace(columnname,'\r\n','<p>') where columnname like '%\r\n%'
select * from tablename
/*
columnname
------------------------------
asdf<p>asdfwe(1 行受影响)*/
go
drop table tablename楼主是在什么地方操作数据的?
select * from tableName where columnName like '%[\n]%'
可以找到4行出来,用
select * from tableName where columnName like '%\n%'
却一行都找不到。
select * from tableName where charIndex(char(13), columnName)>0
select * from schedule where content like '%'+char(13)+'%'
你用这种方式输入到数据库的数据,结果直接可以看到的“\r\n”的,但在页面用textarea输入,然后再保存到数据库的内容,是看不到\r\n这四个字符的。
所以操作上来说,应该是不同的。在数据库这边,就当成你输入的是四个普通字符了,而不是“回车符”和“换行符”了。
gosetchar.htm:
<html>
<body>
<form method="POST" action="setchar.asp">
<p><textarea rows="2" name="S1" cols="20"></textarea><input type="submit" value="提交" name="B1"></p>
</form>
</body>
</html>
setchar.asp
<%
set my_conn=server.createobject("adodb.connection")
str="driver={sql server};server=MYSQLSERVER;uid=sa;pwd=mypass;database=test"
my_conn.open(str)setchar=request.Form("S1")if setchar<>"" then
strSql="insert into tb select '" & setchar & "'"
my_Conn.execute(strSql)
response.write "<p>插入成功</p>"
end ifstrSql="select * from tb where columnname like '%\r\n%'"
set rs = my_Conn.execute(strSql)
while not rs.eof
response.write rs(0) & "<br>"
rs.movenext
wend
%>
<p><a href="setchar.htm">重新添加</a></p>result:
插入成功你好\r\n今天是...
再来一条,换行后用符号: \r\n 再来一句.
再来一条,换行后用符号: \r\n 再来一句.
再来一条,换行后用符号: \r\n 再来一句.重新添加
select * from tb
/*
columnname
------------------------------
你好!
你好\r\n今天是...
再来一条,换行后用符号:
\r\n
再来一句.
再来一条,换行后用符号:
\r\n
再来一句.
再来一条,换行后用符号:
\r\n
再来一句.(5 行受影响)*/不明白这和楼主的有何区别.
select * from tb where columnname like '%\r\n%'
/*
columnname
------------------------------
你好\r\n今天是...
再来一条,换行后用符号:
\r\n
再来一句.
再来一条,换行后用符号:
\r\n
再来一句.
再来一条,换行后用符号:
\r\n
再来一句.(4 行受影响)*/
go
update tb set columnname=replace(columnname,'\r\n','<p>') where columnname like '%\r\n%'
select * from tb
go
/*
columnname
------------------------------
你好!
你好<p>今天是...
再来一条,换行后用符号:
<p>
再来一句.
再来一条,换行后用符号:
<p>
再来一句.
再来一条,换行后用符号:
<p>
再来一句.(5 行受影响)*/
不,懂;帮,顶;学,习;赚,分。
虽然这么回贴可能会被删除。
谁他妈的删除了就是个王八蛋。
强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
有本事,就封杀我!!!理由在这里:
他妈的一帮管理员有神经病啊???
http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
如果有多表,表之间如何关联?
如何更有效地在SQL Server论坛上提问
http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
[code=SQL]
不,懂;帮,顶;学,习;赚,分。
虽然这么回贴可能会被删除。
谁他妈的删除了就是个王八蛋。
强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
有本事,就封杀我!!!理由在这里:
他妈的一帮管理员有神经病啊???
http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
如果有多表,表之间如何关联?
如何更有效地在SQL Server论坛上提问
http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
[code=SQL]