我在比較if語句中的字符串時遇到問題。這是我有:爲什麼這是if語句失敗?
declare @old varchar(max), @manual varchar(max)
set @old = (select ruledef from roolz where ruleid = 1234)
set @manual = 'String responseDate = subject.getField("Response Due Date");' + char(10)
+ 'if (responseDate != null && responseDate .trim().length() > 0) {' + char(10)
+ ' Map params = new HashMap();' + char(10)
+ ' params.put("Response Due Date",responseDate);' + char(10) + char(10) +
+ 'ruleUtil.launchActivity(subject,"PCT-RESP",params,"Launch_PCTRESP",false);' + char(10)
+ char(10) + '}' + char(10)
print @manual
print @old
--if (@old like '%' + @manual + '%')
if (@old = @manual)
begin
print 1;
end
當我運行這個它打印出以下表明@old
和@manual
是相同的:
String responseDate = subject.getField("Response Due Date");
if (responseDate != null && responseDate .trim().length() > 0) {
Map params = new HashMap();
params.put("Response Due Date",responseDate);
ruleUtil.launchActivity(subject,"PCT-RESP",params,"Launch_PCTRESP",false);
}
String responseDate = subject.getField("Response Due Date");
if (responseDate != null && responseDate .trim().length() > 0) {
Map params = new HashMap();
params.put("Response Due Date",responseDate);
ruleUtil.launchActivity(subject,"PCT-RESP",params,"Launch_PCTRESP",false);
}
但不打印1,如果語句失敗意味。我也試過
if (@old like '%' + @manual + '%')
,它仍然無法打印1.
誰能告訴我,爲什麼這個if語句失敗的原因?
爲什麼選擇投票? – 2014-10-16 19:26:14
所需要的只是一個字符不同 - 它可能是一個非打印字符('LF' vs'CR/LF'?)或一個字符,它們看起來像是兩個字符串中的空格,但不是。我會循環逐字,直到找到不同。 – 2014-10-16 19:27:29
這裏寫的字符串確實是一樣的;我檢查了。當它們被粘貼到堆棧溢出時,可能會丟失一些東西。也許嘗試換行符和回車符的不同組合('char(10)'和'char(13)')? – 2014-10-16 19:28:36