代码之家  ›  专栏  ›  技术社区  ›  Adam

涉及参数和变量的SAP HANA查询中的“国家”字符(unicode)

  •  0
  • Adam  · 技术社区  · 6 年前

    为什么我不能继续使用非英语字符 N' 在SAP HANA“SQL”查询中为输入参数指定值时,我可以为输入变量指定值吗?

    例如,以下查询有效(请注意 WHERE 子句(由输入变量生成):

    SELECT 
           "NDATA", "DATA", "CC_NON_ENGLISH"
          , sum("ID") AS "ID" 
    FROM 
        "_SYS_BIC"."Test/MY_VIEW" 
        ('PLACEHOLDER' = ('$CC_PARAM$', 'दिल्ली भारत की राजधानी है.')) 
    WHERE 
        (("NDATA" IN (N'दिल्ली भारत की राजधानी है.'))) 
    GROUP BY 
          "NDATA", "DATA", "CC_NON_ENGLISH"
    

    不过,如果我补充一点 CC_PARAM 变量,我得到一个语法错误。

     SELECT 
            "NDATA", "DATA", "CC_NON_ENGLISH"
          , sum("ID") AS "ID" 
     FROM 
           "_SYS_BIC"."Test/MY_VIEW" 
             ('PLACEHOLDER' = ('$CC_PARAM$', N'दिल्ली भारत की राजधानी है.')) 
     WHERE (("NDATA" IN (N'दिल्ली भारत की राजधानी है.'))) 
     GROUP BY  
             "NDATA", "DATA", "CC_NON_ENGLISH" 
    

    由此产生的错误:

    Could not execute 'SELECT "NDATA", "DATA", "CC_NON_ENGLISH", sum("ID") AS "ID" FROM ...' 
     SAP DBTech JDBC: [257]: sql syntax error: 
     incorrect syntax near "दिल्ली भारत की राजधानी है.": line 7 col 3 (at pos 173)
    

    通常,在HANA中编写SQL查询时,Unicode字符串何时需要在前面加上 什么时候不是?

    这一切都很好,这是怎么回事?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Lars Br.    6 年前

    这个 N' 字符串修饰符 字面量 TO_NVARCHAR() 从某种意义上讲,数据库应该将结果值视为Unicode字符串,但对于文本版本,客户机保证字符串是Unicode字符串。

    这是SQL的标准行为。

    对于特定于SAP HANA(请阅读 ) PLACEHOLDER 此外,它不允许 修饰符(或SQL函数)。

    简而言之:当您想要在SQL中指定Unicode字符串文字时,您可以/应该使用 修饰语。 修饰语。