【问题标题】:Oracle SQL - Is it possible to lookup an Item Record's internal ID by matching the name from some given text?Oracle SQL - 是否可以通过匹配某些给定文本中的名称来查找项目记录的内部 ID?
【发布时间】:2022-09-29 18:23:49
【问题描述】:

我们公司根据销售国家/地区的不同,提供多种 SKU。例如,我们可能有:

项目#1:EXAMPLESKU
项目#2:EXAMPLESKU-CA
项目#3:EXAMPLESKU-UK

这些变化仅作为技术性存在,但强调的产品是相同的。

我想显示一个已保存的搜索,其中将国内项目作为每个行的键,然后我有在自己的列中添加 \"-CA\" 和 \"-UK\" (等)的文本公式向右。

我最终希望在所有指向 INTL 项目记录的 INTL 列上都有链接。所以是这样的:

<一个href=[INTL 项目内部 ID 网址]目标=_空白>\'||[国际项目名称]||\'\'

我遇到的问题是我不确定如何使用该文本来查找项目记录匹配的内部 ID。例如,我需要获取文本 \"EXAMPLESKU-UK\" 并以某种方式返回 \"3\"。这样我就可以在我的项目记录 URL 的末尾使用它。

这可能吗?

  • edit 包含minimal reproducible example 的问题:CREATE TABLE 表的语句;一些样本数据的INSERT 语句;您的尝试如何解决问题;以及问题和错误您的试图。在您不提供任何细节的情况下,我们不可能采取前端问题(如何显示某物的链接)并为您提供后端问题(如何搜索相关项目)的解决方案数据/表格的结构。

标签: sql oracle netsuite


【解决方案1】:

如果您想通过添加的国家/地区代码(CA、UK)进行匹配或过滤,您可以拆分列文本,如下所示...

WITH 
    tbl AS
        (
            SELECT 1 "ITEM", 'EXAMPLESKU'    "COUNTRY" FROM DUAL Union All
            SELECT 2 "ITEM", 'EXAMPLESKU-CA' "COUNTRY" FROM DUAL Union All
            SELECT 3 "ITEM", 'EXAMPLESKU-UK' "COUNTRY" FROM DUAL 
        )
Select
    ITEM "ITEM",
  COUNTRY "COUNTRY",
    CASE WHEN InStr(COUNTRY, '-') = 0 THEN COUNTRY ELSE SubStr(COUNTRY, 1, InStr(COUNTRY, '-') - 1) END "BASE",
  CASE WHEN InStr(COUNTRY, '-') = 0 THEN 'Some txt or Null' ELSE SubStr(COUNTRY, InStr(COUNTRY, '-') + 1) END "ADDTN"
From
    tbl
--  
--  R e s u l t :
--  
--        ITEM COUNTRY       BASE          ADDTN       
--  ---------- ------------- ------------- ----------------
--           1 EXAMPLESKU    EXAMPLESKU    Some txt or Null           
--           2 EXAMPLESKU-CA EXAMPLESKU    CA            
--           3 EXAMPLESKU-UK EXAMPLESKU    UK 

可以通过 ADDTN 列连接或过滤生成的数据集,以获取和使用 ITEM 列。问候....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多