MySQL/Maria构建视图将缩写与完整描述匹配
首先,我不控制我正在管理的数据。它来自一个客户的电子表格&我正在尽我所能地利用它。事实上,我把事情弄得一团糟&尽我所能把它正常化 我使用的是MariaDB 5.5.30,InnoDB表格格式 我的一个项目要求在搜索结果中提供一个项目描述,该描述由“标准”缩写(至少在公司内部)组成。用户可能不知道所有的缩写词定义,所以他们最初的想法是使用一个单独的搜索框来查找缩写词。相反,我希望让用户在线悬停/单击缩写,并查看定义的工具提示 我知道这将涉及某种视图,它将描述中的缩写与缩写表匹配以获得定义。我也意识到这可能会造成的开销 我正在寻找一种相对有效的方法(视图、例程等)的建议。即使这意味着构建一个静态表,将项绑定到提供定义的记录上MySQL/Maria构建视图将缩写与完整描述匹配,mysql,sql,stored-procedures,view,mariadb,Mysql,Sql,Stored Procedures,View,Mariadb,首先,我不控制我正在管理的数据。它来自一个客户的电子表格&我正在尽我所能地利用它。事实上,我把事情弄得一团糟&尽我所能把它正常化 我使用的是MariaDB 5.5.30,InnoDB表格格式 我的一个项目要求在搜索结果中提供一个项目描述,该描述由“标准”缩写(至少在公司内部)组成。用户可能不知道所有的缩写词定义,所以他们最初的想法是使用一个单独的搜索框来查找缩写词。相反,我希望让用户在线悬停/单击缩写,并查看定义的工具提示 我知道这将涉及某种视图,它将描述中的缩写与缩写表匹配以获得定义。我也意识
| ITEMS |
|--------------------------------------|
| Item ID | Desc |
|--------------------------------------|
| 1 | CHOC CONG DR DRP 18" 25ct. |
|--------------------------------------|
| ABBREVIATIONS |
|----------------------------------|
| Abbr ID | Abbr | Definition |
|----------------------------------|
| 1 | CHOC | Chocolate |
| 2 | CONG | Congestion |
| 3 | DR | Delayed-Release |
| 4 | DRP | Drops |
|----------------------------------|
缩写词几乎可以以任何组合出现在项目描述中。只有与缩写匹配的描述片段才会有工具提示。不幸的是,一些缩写是多个单词,而另一些缩写少于4个字符
如果这样做会对性能造成痛苦,我愿意回到他们最初的想法。但是为了一个统一的接口,我认为这会很好
任何(建设性的)建议都将不胜感激。它被搁置了几个月,但我又重新开始玩这个。。。 带有单词边界标记的
REGEXP
用法确保单字母缩写与描述中的部分单词不匹配
从那里,我可以在描述的子字符串周围放置一个与缩写匹配的可操作元素,这样他们就可以看到定义
啊
SELECT ITEMS.ID, ITEMS.Desc, ABBRS.Abbr, ABBRS.Definition
FROM ITEMS
LEFT JOIN ABBREVIATIONS ABBRS ON ITEMS.Desc
LIKE REGEXP CONCAT('.*[[:<:]]', ABBRS.Abbr, '[[:>:]].*');
| RESULTS |
|----------------------------------------------------------|
| ID | Desc | Abbr | Definition |
|----------------------------------------------------------|
| 1 | CHOC CONG DR DRP 18" 25ct. | CHOC | Chocolate |
| 1 | CHOC CONG DR DRP 18" 25ct. | CONG | Chocolate |
| 1 | CHOC CONG DR DRP 18" 25ct. | DR | Delayed-Release |
| 1 | CHOC CONG DR DRP 18" 25ct. | DRP | Drops |
|----------------------------------------------------------|