当前位置: 首页 > 知识库问答 >
问题:

动态内联SQL查询中不支持本地语言(动态地无法在本地语言列之前添加N)

充培
2023-03-14

表名称:客户

customerID VARCHAR(20),
CustomerName NVARCHAR(100)
City NVARCHAR(100)
Country NVARCHAR(100)

CustomerName、City、Country列将具有本地语言。

对于搜索功能,我们需要形成如下所示的动态查询,

SELECT CostomerID 
FROM customer
 WHERE CITY=N'New York'

所以在SP中,我们有如下代码,

SET Query= 'SELECT CostomerID FROM customer WHERE ' + @columnName + '=' + @Value

exec查询

问题是由于城市列有本地语言,我们需要在值动态查询中添加N个前缀,但我们无法在动态查询中添加N个

示例代码

声明@columnName NVARCHAR(200)SET@columnName='CITY'

期望的DECLARE@Value1 NVARCHAR(200)SET@Value1=N'சென்னை' PRINT(@Value1)DECLARE@语句NVARCHAR(500)SET@语句='SELECT CostomerID From客户位置'@列名称'=N"'@Value1""PRINT(@语句)

Autual DECLARE@Value2 NVARCHAR(200)SET@Value2='சென்னை' PRINT(@Value2)DECLARE@语句NVARCHAR(500)SET@语句='SELECT Co售货员ID from客户WHERE'@列名称'=N"'@Value2""PRINT(@语句)

已尝试声明@Value3 NVARCHAR(200)设置@Value3='N'சென்னை' 打印(@Value3)DECLARE@statement NVARCHAR(500)SET@statement='从客户中选择客户ID,其中“@columnName”=N“”“@Value3”“”打印(@statement)

共有1个答案

韦智刚
2023-03-14

当您构建语句时,您并没有在应该查找的字符串文字周围加引号。你没有说你实际得到了什么,但我想是这样的:

SELECT 1 FROM customer WHERE City=Nசென்னை

如果您希望获得:

SELECT 1 FROM customer WHERE City=N'சென்னை'

您需要这样构建语句:

SET @statement= 'SELECT CostomerID FROM customer WHERE ' + @columnName + '=N'''  + @Value + ''

如果@Value碰巧包含单引号,这将失败。更好的方法是定义一个函数,该函数接受NTEXT值并返回带有前面N个、周围引号和任何加倍的内部引号(以及我忘记的任何其他内容)的字符串文字表示。

 类似资料:
  • 除了基本的国际化功能, 例如支持不同的输入编码, 或支持类似十进制分割符之类的国民习惯之外, 还可以对程序输出的消息进行本地化。 一种比较常见的做法是使用 POSIX.1 NLS 函数, 它是作为 FreeBSD 基本系统的一部分提供的。 4.2.1 在编录文件 (Catalog Files) 中编排本地化消息 POSIX.1 NLS 是基于包含使用需要的编码编写的本地化消息所组成的编录文件工作的

  • 第 25 章 动态语言支持 目录 25.1. 介绍 25.2. 第一个例子 25.3. 定义动态语言支持的bean 25.3.1. 公共概念 25.3.2. JRuby beans 25.3.3. Groovy beans 25.3.4. BeanShell beans 25.4. 场景 25.4.1. Spring MVC控制器脚本化 25.4.2. Validator脚本化 25.5. 更多的

  • 本文向大家介绍ASP.NET MVC的Localization本地化多语言支持,包括了ASP.NET MVC的Localization本地化多语言支持的使用技巧和注意事项,需要的朋友参考一下 一、ASP.NET MVC的本地化支持 ASP.NET MVC的是基于ASP.NET运行,所以由ASP.NET提供的所有功能,都可以在MVC里使用,例如缓存,会话状态和本地化。 在传统的ASP.NET Web

  • 在动态类型语言去掉类型二字,就成了动态语言,比方说不少地方都说python是动态语言,其实只是它的动态性比较多一些而已,很多所谓的静态语言也有动态性,只是没有那么明显,因此动态语言是一个很含糊的词,一般而言就是随主流的认识,比如python,ruby是动态语言,C,java是静态语言等 动态性不适合修饰语言,适合修饰一些语法特性,简单的说,静态就是编译期可以决定的一些事情,而动态就是运行期才能决定

  • LanguageID 是指定字母和数字的组合作为语言标识符或分类的代码。 LanguageID 遵循 RFC 1766 标准格式: <languagecode2>-<country/regioncode2>,其中 languagecode2 是来自 ISO 639-1 的两个小写字母代码,而 country/regioncode2 是来自 ISO 3166 的两个大写字母代码。 这是一些 Lang

  • 25.3. 定义动态语言支持的bean 这一节描述了如何针对Spring所支持的动态语言定义受Spring所管理的bean。 请注意本章不会解释这些支持的动态语言的语法和用法。例如,如果你想在你的某个应用中使用Groovy来编写类,我们假设你已经了解Groovy这门语言。如果你需要了解和动态语言本身有关的更多细节,请参考本章末尾第 25.5 节 “更多的资源”一节。 25.3.1. 公共概念 使用