我Persons在SQL Server 2008中有表.
我的目标是找到地址几乎相似的人.
地址与列描述state,town,street,house,apartment,postcode和phone.
由于某些州(非美国)和人为因素(地址错误等)存在某些特定差异,因此地址不会以相同的模式填充.
地址中最常见的错误
主要问题是数据不是相同的模式,因此很难找到类似的地址.
这种问题有什么算法吗?
提前致谢.
UPDATE
从PHP迁移到摇滚乐之后我就开始崭露头角了,但是我对这种挫折并没有尽头,但希望有一个陡峭的学习曲线.
我正在关注如何在rails中制作一个Twitter克隆的指南,并继续沿着这条路径使它越来越像Twitter.
所以我有一个'用户'页面/users/show.html.erb,它显示了用户的所有帖子.
现在,如果当前登录的用户与页面所有者相同,我正在尝试显示文本框,以便用户可以添加新条目.
我应该有一个非常简单的东西
<% if params[:id] == session[:user_id] %>
put the text box here
<% end %>
当然,这不起作用,但正好在它之上我输出了会话[:user_id]和参数[:id],打印输出完全相同.
如果我将==设置为!=,我会收到"将文本框置于此处"消息.
关于我做错了什么的任何建议?我知道这两个值匹配,正如我在网址和当前登录用户的输出中看到的那样.我也输出了
-<% session[:user_id] %>- -<% params[:id] %>-
这样我就可以看到参数的两端都没有间隙或空格或其他字符,而且看起来都很干净.
输出看起来像这样
-4c4483ae15a7900fcc000003- -4c4483ae15a7900fcc000003-
这是用户的mongodb objectId,左侧有破折号,表示没有空格或任何东西.
如果我做这样的事......
String myVar = "in";
if(myVar.ToUpper() == "in")
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
这不会进入"if"阻止..正确吗?
要么
它是否会检查"in"和"IN"中的内容并执行其中的内容if if?如果是这样,为什么呢?是不是应该跳过"if"块里面的内容?
同样的混乱也是ToLower()如此
编辑:所以要检查两种情况,我需要写:
if((myVar.ToUpper().Equals("in"))&&(myVar.Equals("in")))
Run Code Online (Sandbox Code Playgroud)
像这样......好吗?
我正在使用Microsoft SQL Server 2008 R2(带有最新的Service Pack/patches),数据库排序规则是SQL_Latin1_General_CP1_CI_AS.
以下代码:
SET ANSI_PADDING ON;
GO
CREATE TABLE Test (
Code VARCHAR(16) NULL
);
CREATE UNIQUE INDEX UniqueIndex
ON Test(Code);
INSERT INTO Test VALUES ('sample');
INSERT INTO Test VALUES ('sample ');
SELECT '>' + Code + '<' FROM Test WHERE Code = 'sample ';
GO
Run Code Online (Sandbox Code Playgroud)
产生以下结果:
(1排受影响)
Msg 2601,Level 14,State 1,Line 8
无法在对象'dbo.Test'中插入具有唯一索引'UniqueIndex'的重复键行.重复键值为(样本).
该语句已终止.
------------
>样品<
(1排受影响)
我的问题是:
任何帮助/指针在正确的方向将不胜感激.谢谢.
我可能会问一个愚蠢的问题,但我真的找不到谷歌的答案加上我仍然是使用MSVS的初学者.
我最近需要使用函数来比较两个字符串.我不明白的是stricmp和_stricmp的区别.它们都可用于比较字符串并返回相同的结果.我去检查一下:
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
void main( void )
{
char tmp[20];
int result;
/* Case sensitive */
printf( "Compare strings:\n\t%s\n\t%s\n\n", string1, string2 );
result = stricmp( string1, string2 );
if( result > 0 )
strcpy( tmp, "greater than" );
else if( result < 0 )
strcpy( tmp, "less than" );
else
strcpy( tmp, "equal to" );
printf( "\tstricmp: …Run Code Online (Sandbox Code Playgroud) 这个功能在这里找到.这是一个实现strcmp:
int strcmp(const char* s1, const char* s2)
{
while (*s1 && (*s1 == *s2))
s1++, s2++;
return *(const unsigned char*)s1 - *(const unsigned char*)s2;
}
Run Code Online (Sandbox Code Playgroud)
我理解除了最后一行之外的所有内容,简言之,最后一行是怎么回事?
我正在开发一个Java项目,其中有一个HTML编辑器,用户可以在html编辑器(ckeditor)中输入文本,实际的HTML文本保存在数据库中.
现在,当用户下次再来,并编辑相同的文本时,我想通过比较它与数据库来显示两者之间的差异.
我面临的最重要的问题是,即使任何比较器工具知道Italic的样式已经变为Bold,比较器的输出也strike-throughs就是单词Italic和节目Bold插入代替它.
但这并不能解释实际编辑的意图或行动.意图/行动是用户从Italic到Bold.我正在寻找的是一个工具,它不是显示Italic这个词被删除而Bold被添加而不是代替那个,它会向我显示Italic首先是删除的Bold 单词/句子以及用单词/句子替换.
我希望我的意思很明确.我一直在努力实现这一目标.我试过diff_match_patch,daisydiff等,没有任何帮助.
我的试验:
/*
String oldTextHtml = mnotes1.getMnotetext();
String newTextHTML = mnotes.getMnotetext();
oldTextHtml = oldTextHtml.replace("<br>","\n");
oldTextHtml = Jsoup.clean(oldTextHtml, Whitelist.basic());
oldTextHtml = Jsoup.parse(oldTextHtml).text();
newTextHTML = newTextHTML.replace("<br>","\n");
newTextHTML = Jsoup.clean(newTextHTML,Whitelist.basic());
newTextHTML = Jsoup.parse(newTextHTML).text();
diff_match_patch diffMatchPatch = new diff_match_patch();
LinkedList<diff_match_patch.Diff> deltas = diffMatchPatch.diff_main(oldTextHtml, newTextHTML);
diffMatchPatch.diff_cleanupSemantic(deltas);
newText += diffMatchPatch.diff_prettyHtml(deltas);
groupNoteHistory.setWhatHasChanged("textchange");
groupNoteHistory.setNewNoteText(newText);
noEdit = true;
*/
List<String> oldTextList = Arrays.asList(mnotes1.getMnotetext().split("(\\.|\\n)"));
List<String> newTextList = Arrays.asList(mnotes.getMnotetext().split("(\\.|\\n)"));
if (oldTextList.size() == newTextList.size()) …Run Code Online (Sandbox Code Playgroud) 我在C#中很新,我在字符串比较中发现了一些我不太懂的东西.
有人可以解释一下为什么字符之间的比较给出了与下面代码中一个字符长度字符串的比较相反的结果吗?
我预计这"9" < "="将是true(因为'9'(57)的unicode代码比'='(61)的unicode代码少但是它是假的...后面的字符串的比较逻辑是什么,为什么它不同于比较字符?
码:
bool resChComp = '9' < '=';
bool resStrComp = String.Compare("9", "=") < 0;
Console.WriteLine($"\n'9' < '=' : {resChComp}, \"9\" < \"=\" : { resStrComp }");
Run Code Online (Sandbox Code Playgroud)
输出:
'9' < '=' : True, "9" < "=" : False
Run Code Online (Sandbox Code Playgroud) 我有一个正则表达式来检查字符串是否包含特定的单词.它按预期工作:
/\bword\b/.test('a long text with the desired word amongst others'); // true
/\bamong\b/.test('a long text with the desired word amongst others'); // false
Run Code Online (Sandbox Code Playgroud)
但我需要一个即将在变量中检查的词.使用new RegExp不正常,它总是返回false:
var myString = 'a long text with the desired word amongst others';
var myWord = 'word';
new RegExp('\b' + myWord + '\b').test(myString); // false
myWord = "among";
new RegExp('\b' + myWord + '\b').test(myString); // false
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
当涉及到仅限英语的字符串时,我想StringComparison.OrdinalIgnoreCase并StringComparison.InvariantCultureIgnoreCase做同样的工作.但是,我正在使用以下代码中的情况并非如此:
// Returns 0
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.InvariantCultureIgnoreCase)
// Returns -1
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
有什么特别的原因吗?
c# ×3
sql-server ×2
algorithm ×1
c ×1
c++ ×1
html ×1
java ×1
javascript ×1
regex ×1
sql ×1
strcmp ×1
string ×1
t-sql ×1
unique-index ×1