[英]How to search “Polish” text from SQL Server using C#?
我必須在Windows應用程序中從SQL數據庫搜索波蘭語文本。 在“ SQL數據庫”中,該字段為波蘭語。
例如:DB字段是Id,名稱和值是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映射器將使此操作變得更加容易。
或者在查詢中指定區分重音的排序規則。 例如:
select * from users where name like 'HELEN%' collate SQL_Latin1_General_CP1_CI_AI
從數據庫管理員的角度來看,選項1和2最簡單
從程序員的角度來看,選項3是最簡單的
其他整理相關的技巧
Select @@Version
的SQL Server Select @@Version
SELECT CONVERT (varchar, SERVERPROPERTY('collation'));
SQL Server排序SELECT CONVERT (varchar, SERVERPROPERTY('collation'));
波蘭語文字的表數據類型定義(即Nvarchar或varchar)
理想的波蘭語排序規則是不區分大小寫的SQL_Polish_Cp1250_CI_AS_KI_WI
WITH ACCENT_SENSITIVITY = {ON | OFF}
指定對於全文索引和查詢,要更改的目錄是區分重音還是不區分重音。
注意這里:
select * from member where name like 'müller' COLLATE German_PhoneBook_CI_AI
它將找到“müller”,“ mueller”和“Müller”
和
SELECT * FROM mytest WHERE SOUNDEX (col1 )=SOUNDEX ('Muller')
它將找到“müller”,“ mueller”和“Müller”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.