在 SQL Server 中的韩语单词(任何 Unicode 单词)中查找韩语字母表(任何 Unicode 字符)的索引

2024-04-22

我需要按姓名搜索人员。这里的人名可以是英文、韩文或中文。为此我使用了Like搜索条件Name如下:

select * from [MyTable] where Name like N'%t%'

上述声明是给所有包含字母的用户t。但这不适用于韩语或中文。就像我用韩文字母搜索一样那么它应该给出包含这个字母的所有名称,例如**정수연, 재훈아이팟, 정원혁 테스트 7**。我尝试过以下方法,但结果为零

select * from [MyTable] where Name like N'%ㅈ%' - No Results
select PATINDEX(N'%ㅈ%',N'정수연(Mohan)') - giving value as ZERO
select Charindex(N'ㅈ',N'정수연') - giving value as ZERO

有没有办法在SQL Server中找到其他语言的字母表?

我知道如何通过使用编码技术在 C# 单词中查找其他语言中的字母表存在,但不知道如何在 SQL Server 中查找字母表。请在这方面帮助我。

提前致谢。

编辑 C# 代码

public static string DecomposeSyllabels(string unicodeString) {
      try {
        //Consonant consonant only used
        string[] JLT = { "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" };

        // Only used a collection of neutral
        string[] JVT = { "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ" };

        // Initial and coda consonants used in
        string[] JTT = { "", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" };

        double SBase = 0xAC00;
        long SCount = 11172;
        int TCount = 28;
        int NCount = 588;
        string syllables = string.Empty;

        foreach (char c in unicodeString) {
          double SIndex = (int)c - SBase;
          if (0 > SIndex || SIndex >= SCount) {
            syllables = syllables + c;
            continue;
          }

          int LIndex = (int)Math.Floor(SIndex / NCount);
          int VIndex = (int)(Math.Floor((SIndex % NCount) / TCount));
          int TIndex = (int)(SIndex % TCount);
          syllables = syllables + (JLT[LIndex] + JVT[VIndex] + JTT[TIndex]);
        }

        return syllables;
      }
      catch {
        return unicodeString;
      }
    }

您必须分解韩语音节并将它们存储到 SQL 数据库中的单独列中(例如 정수연 的ㅈㅓㅇㅅㅜㅇㅕㄴ)。我建议您编写一个小型自定义应用程序来解析您的数据库,分解所有韩语音节,并将结果保存到单独的列中。

EDIT

下面是一些分解朝鲜语音节的 Python 代码:

#!/usr/local/bin/python
# -*- coding: utf8 -*-
import codecs, sys, os, math

JLT="ㄱ,ㄲ,ㄴ,ㄷ,ㄸ,ㄹ,ㅁ,ㅂ,ㅃ,ㅅ,ㅆ,ㅇ,ㅈ,ㅉ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ".split(",")
JTT=",ㄱ,ㄲ,ㄱㅅ,ㄴ,ㄴㅈ,ㄴㅎ,ㄷ,ㄹ,ㄹㄱ,ㄹㅁ,ㄹㅂ,ㄹㅅ,ㄹㅌ,ㄹㅍ,ㄹㅎ,ㅁ,ㅂ,ㅂㅅ,ㅅ,ㅆ,ㅇ,ㅈ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ".split(",")
JVT="ㅏ,ㅐ,ㅑ,ㅒ,ㅓ,ㅔ,ㅕ,ㅖ,ㅗ,ㅘ,ㅙ,ㅚ,ㅛ,ㅜ,ㅝ,ㅞ,ㅟ,ㅠ,ㅡ,ㅢ,ㅣ".split(",")
SBase=0xAC00
SCount=11172
TCount=28
NCount=588

def HangulName(a):
 b=a.decode('utf8')
 sound=''
 for i in b:
  cp=ord(i)
  SIndex = cp - SBase
  if (0 > SIndex or SIndex >= SCount):
    # "Not a Hangul Syllable"
    pass
  LIndex = int(math.floor(SIndex / NCount))
  VIndex = int(math.floor((SIndex % NCount) / TCount))
  TIndex = int(SIndex % TCount)
  sound=sound+(JLT[LIndex] + JVT[VIndex] + JTT[TIndex]).lower()
 return sound

print HangulName("정수연")

dda$ python 测试.py
ㅈㅓㅇㅅㅜㅇㅕㄴ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 中的韩语单词(任何 Unicode 单词)中查找韩语字母表(任何 Unicode 字符)的索引 的相关文章

  • .Net 将 NULL 值从变量值插入 SQL Server 数据库

    也有类似的问题 但答案不是我想要的 如果引用为 NULL 或尚未分配值 我想将 NULL 值插入 SQL Server 数据库 目前我正在测试 null 它看起来像 String testString null if testString
  • BCP 语法问题

    总之 我正在尝试编写一个可以每天从 SQL Server 2008 实例上的批处理文件运行的查询 我以前从未使用过 BCP 但在查看了一些在线示例后 我尝试创建一个真正的基本查询来测试计算机上的进程和权限 然后再将选择查询扩展到所需的数据集
  • 为什么 Excel 有时会在工作表名称中添加 $?

    我有时但并非总是发现 Excel 会放置一个 位于工作表名称末尾 但在 Excel 中看不到 只有在尝试使用 C 将其导入 SQL Server 时才可见 我遇到过很多不同的情况 它保留了原始工作表 但也创建了第二个空的 隐藏 工作表 其中
  • 如何在 SQL 中的时区中使用“America/New_York”

    我有这段代码在 SQL 中运行良好 但是我想使用不同的时区格式 例如 America New York 代替 US Eastern Standard Time SELECT TODATETIMEOFFSET CAST CURRENT TIM
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec
  • SQL Server:将 varchar 转换为十进制(也考虑指数表示法)

    我需要转换表的数据并进行一些操作 其中一种列数据类型是Varchar 但它存储decimal数字 我正在努力转换varchar into decimal 我努力了CAST TempPercent1 AS DECIMAL 28 16 问题是数
  • 小数除以小数并得到零

    为什么当我这样做时 select CAST 1 AS DECIMAL 38 28 CAST 1625625 AS DECIMAL 38 28 我得到 0 吗 但是当我得到 0 时 select CAST 1 AS DECIMAL 20 10
  • 如何使用 Unicode 十六进制值 (UTF-16) 在 Swift 中表达字符串

    我想在 Swift 中使用十六进制值编写 Unicode 字符串 我已阅读文档 https developer apple com library prerelease ios documentation Swift Conceptual
  • SQL查询多行变成单行

    有什么方法可以将通常返回具有相同值的多行的 SQL 查询更改为单行吗 例如 如果我现有的查询返回以下内容 ColA ColB 1 AA 1 BB 1 CC 2 AA 3 AA 我可以将查询更改为仅返回 3 行 并将 1 的第二个和第三个结果
  • 如何授予用户访问 SQL Server 中的 sys.master_files 的权限?

    我需要授予数据库用户读取权限sys master files桌子 我怎样才能做到这一点 目前用户拥有以下权限 Calling SELECT on sys master files返回空结果 我还使用以下命令测试了相同的查询sa用户按预期工作
  • SQL 解析键值字符串

    我有一个像这样的逗号分隔字符串 key1 value1 key2 value2 key3 value3 key1 value1 1 key2 value2 1 key3 value3 1 我想将它解析成一个如下所示的表 Key1 Key2
  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • SQL分组和总结

    我的表如下所示 income date productid invoiceid customerid 300 2015 01 01 A 1234551 1 300 2016 01 02 A 1234552 1 300 2016 01 03
  • 如何从 SQL Server 中的存储过程检索参数列表

    使用 C 和 System Data SqlClient 有没有办法在实际执行 SQL Server 上的存储过程之前检索属于该存储过程的参数列表 我有一个 多环境 场景 其中同一数据库模式有多个版本 环境的示例可能是 开发 暂存 和 生产
  • SQL Server - 删除语句增加日志大小

    我有一个LOGGIN数据库很大 400 GB 它有数百万行 我刚刚跑了一个delete该语句花费了 2 5 小时并删除了可能数百万行 delete FROM DB dbo table where Level not in info erro
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • Sql Server 字符串到日期的转换

    我想像这样转换一个字符串 10 15 2008 10 06 32 PM 转换为 Sql Server 中的等效 DATETIME 值 在 Oracle 中 我会这样说 TO DATE 10 15 2008 10 06 32 PM MM DD
  • 查找给定表的哪些行被锁定以及谁在 SQL Server 中锁定这些行

    有没有办法找出 SQL Server 2008 中特定表的哪些行被锁定 我还想知道锁定它们的用户 sys dm tran locks http msdn microsoft com en us library ms190345 aspx 正
  • PDO dblib 未捕获警告

    我已经使用 realestateconz mssql bundle 和免费 TDS 成功使我的 symfony 应用程序连接到 MSSQL 数据库 我的问题是 当我尝试执行存储过程时 如果出现问题 该过程会引发异常 但 PDO 不会报告任何

随机推荐