如何搜索"Polish"使用c#从SQL Server中提取文本
本文关键字:quot SQL Server 取文本 提取 使用 搜索 何搜索 Polish | 更新日期: 2023-09-27 18:12:21
我必须从SQL数据库在我的windows应用程序搜索波兰文本。在SQL数据库中,字段为波兰语。
例如:DB字段为Id, Name, value为1,Ąćłń。我有一个输入搜索文本的文本框。当我输入文本框值"Ąćłń"时,现在结果是空的。选择查询可以很好地处理英文字符。我的问题是如何搜索波兰语文本?
这应该与搜索英语或任何其他语言文本没有任何不同....
- 连接到您的数据库
- 启动参数化搜索查询,确保使用
nvarchar
作为您的参数类型 - 显示结果!
基本上,就像:
public List<object> Search(string searchArgument)
{
string searchQry = "SELECT (list of columns) FROM dbo.YourTableName WHERE Name = @SearchArg;";
// Define connection and command to use
using (SqlConnection conn = new SqlConnection("....."))
using (SqlCommand cmdSearch = new SqlCommand(searchQry, conn))
{
// add parameter to search command - make sure to define NVarChar and a valid length!
cmdSearch.Parameters.Add("@SearchArg", SqlDbType.NVarChar, 50);
// set parameter value
cmdSearch.Parameters["@SearchArg"].Value = searchArgument;
// open connection, execute query, handle results
conn.Open();
using (SqlDataReader rdr = cmdSearch.ExecuteReader())
{
// loop over rows returned
while (rdr.Read())
{
// do something with results - create your objects that you want to return...
}
// close reader
rdr.Close();
}
// close connection
conn.Close();
}
}
使用像实体框架这样的OR映射器会使这更容易。
修改全文目录CATALOGNAME
或者在查询中指定对重音敏感的排序规则。例如:
select * from users where name like 'HELEN%' collate SQL_Latin1_General_CP1_CI_AI
- 如果你没有全文目录(你应该),你可以配置数据库,使它是重音敏感;将排序规则改为SQL_Latin1_General_CP1_CI_AI。
从程序员的角度来看,选项3是最简单的
其他与排序相关的提示
- SQL Server的
- SQL Server collation by
SELECT CONVERT (varchar, SERVERPROPERTY('collation'));
表数据类型定义的波兰语文本(即Nvarchar或varchar)
理想的polish Collation是大小写不敏感的SQL_Polish_Cp1250_CI_AS_KI_WI
- 将SQL Server补丁到最新版本
- 默认SQL Server排序规则为SQL_Latin1_General_CP1_CI_AS
- 查看本文
Select @@Version
版本WITH ACCENT_SENSITIVITY = {ON|OFF}
指定要更改的目录对全文索引和查询是重音敏感还是重音不敏感。
注意:
select * from member where name like 'müller' COLLATE German_PhoneBook_CI_AI
它会找到" m
和
SELECT * FROM mytest WHERE SOUNDEX (col1 )=SOUNDEX ('Muller')
它将发现"穆勒","穆勒","穆勒"