如何搜索"Polish"使用c#从SQL Server中提取文本

本文关键字:quot SQL Server 取文本 提取 使用 搜索 何搜索 Polish | 更新日期: 2023-09-27 18:12:21

我必须从SQL数据库在我的windows应用程序搜索波兰文本。在SQL数据库中,字段为波兰语。

例如:DB字段为Id, Name, value为1,Ąćłń。我有一个输入搜索文本的文本框。当我输入文本框值"Ąćłń"时,现在结果是空的。选择查询可以很好地处理英文字符。我的问题是如何搜索波兰语文本?

如何搜索"Polish"使用c#从SQL Server中提取文本

这应该与搜索英语或任何其他语言文本没有任何不同....

  1. 连接到您的数据库
  2. 启动参数化搜索查询,确保使用nvarchar作为您的参数类型
  3. 显示结果!

基本上,就像:

    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。
从数据库管理员的角度来看,选项1和2是最简单的

从程序员的角度来看,选项3是最简单的

其他与排序相关的提示

    SQL Server的Select @@Version版本
  • 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
  • 查看本文

WITH ACCENT_SENSITIVITY = {ON|OFF}

指定要更改的目录对全文索引和查询是重音敏感还是重音不敏感。

注意:

select * from member where name like 'müller' COLLATE German_PhoneBook_CI_AI 

它会找到" m ller", "mueller"answers" m ller"

SELECT * FROM mytest WHERE SOUNDEX (col1 )=SOUNDEX ('Muller')

它将发现"穆勒","穆勒","穆勒"