如果列中存在子字符串,我必须根据决定执行某些操作。
例如,我的专栏'LangCodes'有#个分隔值,例如en-us#ar-ae#in-id。
我可以使用SQL in 运算符,如果我可以转换形式的值,如:'en-us','ar-ae','in-id'。
例如select Col1 from Table1 where 'en-us' in (LangCodes)
我是否需要使用SQL的替换功能来完成此操作或存在更好的方法?
答案 0 :(得分:2)
您无法在SQL Server中有效地执行此操作,因为您以不同于使用关系数据库的方式存储数据。您需要一个包含id
和LangCode
列的单独关联表,每个语言代码只有一行。
你可以用字符串操作做你想做的事。这是一种典型的方式:
where '#'+LangCodes+'#' like '%#en-us#%'
但是,这不能利用LangCodes
上的索引。
答案 1 :(得分:0)
检查语言代码的最有效和最佳方法是将它们分隔在您的表格中。
这就是你的表格的样子(只是例子)
product table
-------------
id
name
language_code table
-------------------
id
name
product_language_code table
---------------------------
product_id
language_code_id