我有一个varchar(800)
列,它是一个表中的主键,另一个表是FK。
问题是,如果我len(field)
- 它说186.如果我复制/粘贴文本并在记事本或其他内容中检查,我有198个字符
内容如下:
http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGGTo8JmCWDydNA19MrL4aON-02pA&url=http://creativity-online.com/news/chrysler-nokia-target-among-winners-of-teds-first-ad-contest/149189
关于为什么长度差异的任何想法?
修改
你是对的。我使用的是基于Web的sql管理器,这让我感到很蠢。
谢谢。
答案 0 :(得分:3)
从数据库中读取URL后,您是否对URL进行HTML编码?
moriartyn建议SQL Server len
函数将&
计为单个字符,但事实并非如此。但是,如果字段中的实际内容不是HTML编码的,并且在页面中插入时是HTML编码,则会将每个&
字符更改为&
,这将占额外长度。< / p>
答案 1 :(得分:2)
我的猜测是因为你的文本中有三个&
,所以sql server len函数将这些作为&amp;&amp;或者一个字符,并且在记事本中它将它们计为每个五个,这将为您提供十二个额外的数字。
答案 2 :(得分:0)
186:
http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGGTo8JmCWDydNA19MrL4aON-02pA&url=http://creativity-online.com/news/chrysler-nokia-target-among-winners-of-teds-first-ad-contest/149189
198:
http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGGTo8JmCWDydNA19MrL4aON-02pA&url=http://creativity-online.com/news/chrysler-nokia-target-among-winners-of-teds-first-ad-contest/149189
注意&
和&
:其中3个,&
长4个字符= 12
你既没有平等比较也没有比较相同的字符串。
在SQL中:
SELECT
LEN('http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGGTo8JmCWDydNA19MrL4aON-02pA&url=http://creativity-online.com/news/chrysler-nokia-target-among-winners-of-teds-first-ad-contest/149189'),
LEN('http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGGTo8JmCWDydNA19MrL4aON-02pA&url=http://creativity-online.com/news/chrysler-nokia-target-among-winners-of-teds-first-ad-contest/149189')