sql cli 提示符中的“~”是什么意思,我该如何逃避它?

What does ' ~' mean in sql cli prompt and how do I escape from it?

我在SQL命令行中玩弄,不小心输入了错误的命令。这样做后,提示符从预期的“>”变为“~”,我无法输入任何新命令或使波浪字符消失

这是什么意思,我该如何摆脱它?

我的尝试如下:

   select serverproperty'''sdf('''')
4~ go
5~ ;
6~ go
7~ undo
8~ stop
9~ quit
10~ quit
11~
12~
13~
14~
15~ quit
16~ stop
17~ go
18~ :EXIT\
19~ :EXIT
20~ exit
21~ EXIT
22~ EXIT
23~ GO
24~ Q
25~ exit()
26~ :Exit()
27~ :EXIT()
28~ GO
29~ select serverproperty('edition')
30~ go
31~ select serverproperty('edition')
32~ go
33~ ;
34~

您在单引号字符串中。你用 ''' 开始了你的字符串,它打开了字符串,然后在其中有一个转义的单引号。然后你不断扩大所说的字符串。然后你再也没有单引号 (') 所以你永远不会激发文字字符串。

这个动画 gif 也可能有助于进一步解释(这是 sqlcmdmssql-cli 的操作方式相同):

首先你有下面的语句:

1> SELECT 1 AS one,
2>        2 AS two;
3> --Single command, with 2 lines, no quoted string
4> GO

这没有波浪号 (~) 字符,因为您不在字符串文字中。

然后你有第二条语句:

1> SELECT 'Line 1
2~ Line 2
3~ Line 3' AS String;
4> --Single command, 3 lines, 1 string
5> GO

第 2 行和第 3 行有波浪号,因为它们在文字字符串中。