VB.Net代码
Dim sTest As String = "QueryLine1" & vbCrLf & "QueryLine2"
当前输出
" QueryLine1" &安培; vbCrLf& " QueryLine2"
我想看看
QueryLine1
QueryLine2
SQL查询
declare @now date,@dob date, @now_i int,@dob_i int, @days_in_birth_month int
declare @years int, @months int, @days int
set @now = '2013-02-28'
set @dob = '2012-02-29' -- Date of Birth
set @now_i = convert(varchar(8),@now,112) -- iso formatted: 20130228
set @dob_i = convert(varchar(8),@dob,112) -- iso formatted: 20120229
set @years = ( @now_i - @dob_i)/10000
-- (20130228 - 20120229)/10000 = 0 years
set @months =(1200 + (month(@now)- month(@dob))*100 + day(@now) - day(@dob))/100 %12
-- (1200 + 0228 - 0229)/100 % 12 = 11 months
set @days_in_birth_month = day(dateadd(d,-1,left(convert(varchar(8),dateadd(m,1,@dob),112),6)+'01'))
set @days = (sign(day(@now) - day(@dob))+1)/2 * (day(@now) - day(@dob))
+ (sign(day(@dob) - day(@now))+1)/2 * (@days_in_birth_month - day(@dob) + day(@now))
-- ( (-1+1)/2*(28 - 29) + (1+1)/2*(29 - 29 + 28))
-- Explain: if the days of now is bigger than the days of birth, then diff the two days
-- else add the days of now and the distance from the date of birth to the end of the birth month
select @years,@months,@days -- 0, 11, 28
将其存储在变量中并执行存储的sql查询结果时为空。因为输入标记是存储在变量中的。
如果您在sql查询窗口中复制粘贴上面的sql查询,那么您将获得结果。但是当在vb.net变量中存储查询并执行查询结果时没有。
我尝试用一个小例子来强调这个问题,这就是为什么从一小段代码开始的。
答案 0 :(得分:3)
你所说的实际上仍然没有办法实际发生,但无论如何,它甚至都不重要。如果你想要的是编写多行SQL查询,那么你根本不需要使用字符串连接。如果您正在使用VB 2015(或更高版本),那么您实际上可以编写多行String
字面值,例如
Dim query = "SELECT *
FROM MyTable
WHERE ID = 1"
如果您愿意,可以格式化文本以使文本排成一行,因为SQL不关心空格:
Dim query = "SELECT *
FROM MyTable
WHERE ID = 1"
如果您使用的是旧版本的VB,则可以使用XML文字:
Dim sql = <sql>
SELECT *
FROM MyTable
WHERE ID = 1
</sql>
Dim query = sql.Value
同样,如果需要,您可以使用空格格式化:
Dim sql = <sql>
SELECT *
FROM MyTable
WHERE ID = 1
</sql>
Dim query = sql.Value
如果您使用调试器查看query
的值,那么如果它不能显示多行Strings
,那么您现在应该仍然会看到同样的事情,但实际值将完全如同应该。