Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在“上选择西里尔字母地址”;拉丁语1“通用”CI“AS”;数据库_Sql_Sql Server_Database_Tsql_Collation - Fatal编程技术网

Sql 在“上选择西里尔字母地址”;拉丁语1“通用”CI“AS”;数据库

Sql 在“上选择西里尔字母地址”;拉丁语1“通用”CI“AS”;数据库,sql,sql-server,database,tsql,collation,Sql,Sql Server,Database,Tsql,Collation,我在slq服务器数据库中正确存储了西里尔文地址(使用nvarchar) 选择西里尔字母地址所在的行时,select语句将正确返回该行 但是,当尝试选择具有特定地址的所有行时(例如,在where子句中),select找不到任何内容,因为它使用西里尔语搜索词,根据拉丁语排序规则将其转换为?”,并在数据库中搜索?”,当然找不到 例如,可以通过服务器或数据库设置进行修复,而不需要前缀“N”,也不需要丢失所有德语、法语等语言,。。。口音 和/或西欧和西里尔文符号是否有“整体排序规则”,或UNICODE是否

我在
slq服务器
数据库中正确存储了西里尔文地址(使用
nvarchar

选择西里尔字母地址所在的行时,select语句将正确返回该行

但是,当尝试选择具有特定地址的所有行时(例如,在
where
子句中),select找不到任何内容,因为它使用西里尔语搜索词,根据拉丁语排序规则将其转换为
?”
,并在数据库中搜索
?”
,当然找不到

例如,可以通过服务器或数据库设置进行修复,而不需要前缀
“N”
,也不需要丢失所有德语、法语等语言,。。。口音


和/或西欧和西里尔文符号是否有“整体排序规则”,或UNICODE是否有16位排序规则?

如果您希望在
cyrillic
中传递搜索字符串,但不使用
UNICODE
,则应在“cyrillic数据库”的上下文中启动查询,即如果您的数据库(我将其命名为
LatinDB
)具有
Latin1\u General\u CI\u AS
排序规则您应该创建另一个具有西里尔文排序规则的数据库,例如
CyrDB
,然后从
CyrDB
的上下文中查询数据库,如下所示:

use CyrDB;

select *
from LatinDB.dbo.your_tbl
where address = 'какой-то там адрес' -- here I'm not using Unicode, no N character behind my string
可以通过服务器或数据库设置等方式进行修复,而无需 要求前缀为“N”且不丢失所有德语, 法语,…口音

如果您的意思是在结果集中保存这些“重音符号”,那么它们将被保存,因为字段是
nvarchar


如果您的意思是希望在相同的
Cyrillic
上下文中输入查询,则应精确确定您认为松动的符号,如果其ascii代码介于1到127之间,则仍可使用
CyrDB
启动查询,但如果您的字符超过128个,并且您不希望将其作为
Unicode
传递,则应使用另一个具有适当排序规则的数据库的上下文

在哪里执行T-SQL语句-在SQL Server Management Studio中,使用一些脚本,…?谢谢。这通常是一个客户端设置。例如,当我从PHP连接时,我必须将
CharacterSet
连接选项设置为
UTF-8
。st是如何以及在哪里执行的创建了一个组件,它是如何执行的,在哪里执行的?您是从某种应用程序调用它吗?类似于
where SomeColumn='SomeCyrillic'
无法工作。这将被解释为扩展ASCII字符串,而
where SomeColumn=N'SomeCyrillic'
将使用字符串作为
UCS-2
(几乎与
utf-16
)相同,因此保留了所有特殊字符。顺便说一句:在大多数情况下,建议使用类型化参数而不是文字…(阅读关于小bobby表的内容)您是否可以编辑您的问题,以包括现有数据库和每个链接列的排序规则?这可能有助于我们回答您的问题:这可能适用于非常小的环境,但我怀疑这是否适用于更大的数据库。然后,如果使用更多的语言,您可能需要添加大量数据库。所有这些数据库都必须是同步的不知何故,这似乎是一种相当低效的方法…>>>这可能在非常小的环境下工作不,正确的方法是类型化参数。文本值是危险的,很难处理。。。