在脚本中使用引号

可以通过多种不同方法在脚本语句中使用引号。

LOAD 语句内

LOAD 语句内,以下符号应用作引号:

字段名称
说明 符号 代码点 示例

双引号

" " 34 “字符串”
方括号 [ ] 91, 93 [字符串]
重音符号 ` ` 96 `字符串`
字符串文字
说明 符号 代码点 示例
单引号

' '

39 ‘字符串’

SELECT 语句中

对于 SELECT 语句(由 ODBC 驱动程序解释),使用情况可能会有所不同。通常,对于字段名和表格名应使用直双引号 (Alt + 0034),对于文字应使用直单引号 (Alt + 0039),并避免使用重音符号。但是,一些 ODBC 驱动程序不仅将重音符号视为引号,而且首选重音符号。在这种情况下,生成的 SELECT 语句包含重音引号。

Microsoft Access 引号示例

Microsoft Access ODBC Driver 3.4(包括在 Microsoft Access 7.0 中)在分析 SELECT 语句时接受以下引号:

字段名和表格名:

  • [ ]
  • " "
  • ` `

字符串文字:

  • ' '

其他数据库可能具有不同的约定。

LOAD 语句外

LOAD 语句外,Qlik Sense 期望在表达式中使用双引号表示变量引用,而不是字段引用。如果使用双引号,则应将括起来的字符串解释为变量和将要使用的变量的值。

上下文外字段引用和表格引用

一些脚本函数引用已创建的字段,或者 LOAD 语句输出中的字段,如 Exists()Peek()。这些字段引用被称为上下文外字段引用,与引用上下文中的字段的源字段引用相对,即 LOAD 语句输入表中的字段。

应将上下文外字段引用和表格引用看作是文字,因此需要使用单引号。

名称和文字之间的差异

比较以下示例,名称和文字之间的差异会变得更加清晰:

Example:  

'Sweden' as Country

如果在 LOADSELECT 语句中将此表达式用作字段列表的一部分,则会将文本字符串“Sweden”作为字段值加载到 Qlik Sense 字段“Country”。

Example:  

"land" as Country

如果在 LOADSELECT 语句中将此表达式用作字段列表的一部分,则会将数据库字段的内容和名为“land”的表格列作为字段值加载到 Qlik Sense 字段“Country”。这意味着会将 land 视为字段引用。

数值和字符串文字之间的差异

比较以下示例,数值和字符串文字之间的差异会变得更加清晰:

Example:  

'12/31/96'

如果将此字符串用作表达式的一部分,则会在第一步中将其解释为文本字符串“12/31/96”,这反过来也可以将其解释为日期,如果日期格式为“MM/DD/YY”。在这种情况下,会将它存储作为同时包含数字和文字表示形式的双重值。

Example:  

12/31/96

如果将此字符串用作表达式的一部分,则会将它解释为 12 除以 31 除以 96 的数字。

在字符串中使用引号

如果字符串包含可用作引号的字符,则在引用字符串时明确指明字符串在何处开头以及在何处结束很重要。如果没有正确引用字符串,脚本将失败,或者将不当加载数据。

引用包含引号的字符串有两种方法。

使用特定引号来引用字符串

选择未在字符串内使用的引号,并将其用于引用整个字符串。Qlik Sense 将使用该特定引号来确定字符串何处开始和结束。

以下引号中的任一种都可用于引用整个字符串:

  • 双引号 " "
  • 方括号 [ ]
  • 重音符号 ` `
  • 单引号 ' '

Example:  

[表格 '1 "2"]

方括号用于引用字符串。字符串加载为:表格 '1 "2"

'string `Name1` "Name2'

单引号用于引用字符串。字符串加载为:string `Name1` "Name2

使用转义字符

转义字符是用于引用字符串的另外的实例。它们必须添加在出现在字符串中的引号的每个实例旁。当所有引号在字符串内使用时,您需要在用于引用字符串的相同类型的引号旁添加转义字符。如果您希望使用已经在字符串中使用的引号,还可使用转义字符。

仅以下符号可用作转义字符:

  • 双引号 " "
  • 方括号 [ ]
  • 单引号 ' '

Example:  

"Michael said ""It's a beautiful day""."

如果使用双引号 " " 引用字符串,则必须在字符串中使用的每个双引号旁添加额外的双引号。

该字符串将加载为 Michael said "It's a beautiful day"。通过使用转义字符 ""Qlik Sense 数据加载编辑器理解哪些双引号是字符串的一部分以及哪个引号表示字符串结束。用在缩写 It's 中的单引号无需转义,因为它并非用来引用字符串的符号。

Example:  

'Michael said: "It''s a beautiful day".'

如果使用双引号 " " 引用该字符串,则必须在字符串中使用的每个单引号旁添加额外的单引号。

该字符串将加载为 Michael said "It's a beautiful day"。用于引用 Michael 所说内容的双引号无需转义,因为它并非用来引用字符串的符号。

Example:  

[Michael said [It's a "beautiful day]].]

方括号 [ ] 的作用与另外两种引号不同。如果您需要将括号用作转义字符,则只能在右侧方括号 ] 旁添加额外的括号,而非在左侧方括号 [ 旁添加。

该字符串将加载为 Michael said [It's a "beautiful day]。则仅会将右侧方括号 ] 转义。在字符串中使用的单引号 ' 和双引号 " 无需转义,因为它们并非用于引用字符串。