查看: 5796|回复: 8
请教:如何查询单引号的字段
论坛徽章:0
select * from plu where pluname 包含单引号,怎么写?
论坛徽章:1
select * from plu where pluname = '''tom'''; 用一个单引号做转义。
论坛徽章:0
是商品名称中含有单引号的都过滤出来哦
论坛徽章:1089
论坛徽章:1089
with tmp as
(select 'a'||chr(39)||'nc' text from dual
select 'abc' from dual
select 'cd我们...'||chr(39)||'\dd' from dual)
select&&text&&from tmp where trim(translate(text,translate(text,'''',' '),' '))='''';
with tmp as
(select 'a'||chr(39)||'nc' text from dual
select 'abc' from dual
select 'cd我们...'||chr(39)||'\dd' from dual)
select&&text&&from tmp where instr(text,'''')&1;
论坛徽章:3
随便给你写了个正则看看能不能用.
select * from (
select '''my work is good.''' sample_col from dual
select 'my''work is good.' sample_col from dual
select 'my work is good' from dual
where regexp_like(sample_col,'['''']+')
论坛徽章:3
select * from (
select '''my work is good.''' sample_col from dual
select 'my''work is good.' sample_col from dual
select 'my work is good' from dual
where instr(sample_col,'''')&0
这么写效果可能更好点。
论坛徽章:1
select * from plu t where instr(t.pluname ,'''') & 0;
找出含有单引号的记录。
论坛徽章:391
chr(39)是个好办法
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有
北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号请教单引号(&)的使用
Description of your first forum.
18 篇帖子 & 分页:1 / 2 &
由 ttaa & 星期二, 日 15:16
我查看过很多关于单引号的使用问答。但还不太懂。
而且也没分了,大虾们义务一下吧。
引号(')在中经常用到。
会使用,应该很好用。
但我还不会,所以很难用,所以也就需要高手指点。
我在表框中放置了一个TMemo,TEdit,TBotton,
Edit1中输入abcd。
procedure TForm1.Button1Click(Sender: TObject);
& str:='name=' + edit1.T
& Memo1.Lines.Add('1 : & &'+str);
& str:='name=' + ''+Edit1.Text+'';
& Memo1.Lines.Add('2 : & &'+str);
& str:='name=' + 'Edit1.Text';
& Memo1.Lines.Add('3 : & &'+str);
& str:='name=' + '''Edit1.Text''';
& Memo1.Lines.Add('4 : & &'+str);
& str:='name=' + #39 + Edit1.Text + #39;
& Memo1.Lines.Add('5 : & &'+str);
& str:='name=''' + Edit1.Text + '''';
& Memo1.Lines.Add('6 : & &'+str);
& str:='name=' + ''''+Edit1.Text+'''';
& Memo1.Lines.Add('7 : & &'+str);
& str:='name='+'''+Edit1.Text+''';
& Memo1.Lines.Add('8 : & &'+str);
& //str:='name'+''Edit1.Text''; &//Wrong
& //str:='name'+''''Edit1.Text''''; //Wrong
& Memo1.Lines.Add(' ') ;
运行结果如下:
1 : & &name=abcd
2 : & &name=abcd
3 : & &name=Edit1.Text
4 : & &name='Edit1.Text'
5 : & &name='abcd'
6 : & &name='abcd'
7 : & &name='abcd'
8 : & &name='+Edit1.Text+'
//1,//3,//5。都很好理解,没疑问。
其他的,就不大明白了。
就拿//6来说, & str:='name=''' + Edit1.Text + '''';
总共有8个单引号,哪个跟哪个配成一对啊?
由 dreamliu2001 & 星期二, 日 15:23
不是匹配的问题,
'''在这里只代表一个',因为前面有一个'
由 twos & 星期二, 日 15:42
字符串中,''只代表一个'
因为'是字符串标识符,而你在字符串中要用到这个字符,
就必须在前面加一个用来转义的'
就象C中,你的字符串中出现了\,就必须用两个\来表示
比如&test\\haha&实际就表示test\haha
由 ttaa & 星期二, 日 15:52
楼上两位,
dreamliu2001说 : '''在这里只代表一个'
twos说 & & & & : ''只代表一个'
会不会矛盾啊?我也看过以前的帖子也有说:''''只代表一个'。
那岂不是'',''','''',都可以代表一个'?
有帖子说:引号必须是成队出现的。
str:='name=''' + Edit1.Text + ''''
那里是成对的?那里用是转义?因该有一定的规律的。
由 wp_hammer & 星期二, 日 15:55
2.''表示空。
4.'''fhsjdfhjsdf'''第一个和最后一个是一对,第二、第三表示一个单引号,第四、第五
表示一个单引号。
6.跟4是一样的,''''中间两个表示一个单引号。
7.也是一样。
8.也是一样,在电脑看来,str:='name='+'''+Edit1.Text+'''中+Edit1.Text+是个字符串。
其实问题很简单:
& &在两个单引号内,两个挨着的单引号表示一个单引号,匹配关系自己查一下。弄错了,
就象你后面的wrong。
由 ttaa & 星期二, 日 16:28
to :wp_hammer,讲番声多谢先。
既然2中的''可表示空,那可不可以理解成'''表示一个',''''表示两个''。
你说的:(4.'''fhsjdfhjsdf'''第一个和最后一个是一对,第二、第三表示一个单引号,第四、第五
表示一个单引号。)怎么不理解成左边一个单引号,右边一个点引号?
我好像会用,但不理解。
由 小猪 & 星期二, 日 17:55
帮你理一下,
''表示一个单引号字符!
所以'''表示一个'的说法是错的,
'是作为字符串的标识的,所以对于一个字符串来讲,
必须以'开始和结束,比如s:='aaaa';
我想这个很容易理解,那么我们再来看一下,如果
这个字符串的内容是aa'aa,应该怎么表示?
s:='aa''aa';
我们来模拟一下编译器对这个语句的扫描过程,
首先,发现一个单引号,而且后面的一个字符不是
单引号,于是记录字符串开始了,然后,又扫描到
一个单引号,继续扫描,后面一个还是单引号,于是,
编译器记录下一个单引号字符,继续扫描,又遇到一个
单引号,但后面一个字符已经不是单引号了,于是,
编译器记录下字符串结束.
你用上面的分析来看看4,就会很清楚了.
由 wp_hammer & 星期三, 日 10:26
计算机的理解应该是这样的,遇到第一个单引号找与它匹配的单引号,发现第二个,
看它后面紧接着有没有单引号,没有则找到表示空,有则认为2、3是一个“单引号”,
“单引号”是字符,继续寻找与第一个匹配的单引号........直到找到,再发现第一个
单引号...................
由 gx8118 & 星期三, 日 11:44
各位说的好像都有道理,可是太乱,我也来理一下(同意小猪的观点):
1.其实很简单的,s:='aaaa'得出结果s:=aaaa,这都可理解。
2.s:='''aaaa'''得出结果s:='aaaa'是为什么呢,因为在delphi中两个单引号表示一个'字符,
&所以s:='aa''aa'就得出结果s:=aa'aa。
3.计算机是怎么执行的呢,请见如下:遇到第一个单引号找与它匹配的单引号,发现第二个,
&看它后面紧接着有没有单引号,没有则找到表示空,有则认为2、3是一个“单引号”,
&“单引号”是字符,继续寻找与第一个匹配的单引号........直到找到,再发现第一个
&单引号...................
由 小猪 & 星期三, 日 11:52
补充一下,可能编译器实际上处理字符串时不一定是按照我描述
的流程去做的,比如它有可能先找到字符串结束的单引号,然后分配
内存等等,但是,按照我描述的流程,可以帮助你准确的理解单引号
在这里的用法.
由 ttaa & 星期三, 日 15:24
谢谢各位的帮忙,不过可惜我没有分送了。
因为我还没有赚过钱,倒把老底都给花光了。
我再慢慢理一下你们的回答。
str='''abcd'''共有6个引号。
是不是理解成1,6是配对的。表示里面是字符串。
2,3表示一个字符(')。
4,5也表示一个字符(')?
由 小猪 & 星期四, 日 10:32
u r right!
呵呵,要分吗?给你200分如何?
由 ttaa & 星期四, 日 13:01
to 小猪,如果可以的话。那太好了。但斑竹会认为这是***。
由 小猪 & 星期四, 日 13:40
/delphibbs/dispq.asp?lid=1208822
由 MrMengyi & 星期四, 日 13:40
看各位的解释好有趣
回答的各位都没有错
只是问题不容易说清楚
用多了自然就清楚了
18 篇帖子 & 分页:1 / 2 &