小编Mik*_*ike的帖子

左连接始终包含空记录

我使用的Oracle 11gR2,我试着写两个表中返回地址数据的查询,CUSTOMERSLOCATIONS.给定客户可能(或可能不)具有不同的位置,每个位置具有其自己的地址.

我想为每位客户及其所有位置返回地址.例如,如果表包含如下数据:

顾客
CUSTOMER_ID地址
    1"纽约"
    2"加州"

地点 CUSTOMER_ID LOCATION_ID地址 1 1"新泽西"

然后我希望结果看起来像:

CUSTOMER_ID LOCATION_ID地址
   1"纽约"
   1 1"新泽西"
   2"加州"

我的第一个想法是这样的:

SELECT 
 CUSTOMERS.CUSTOMER_ID,
 LOCATIONS.LOCATION_ID,
 NVL(LOCATIONS.ADDRESS,CUSTOMERS.ADDRESS) ADDRESS
FROM
CUSTOMERS
 LEFT JOIN
LOCATIONS ON (CUSTOMERS.CUSTOMER_ID=LOCATIONS.CUSTOMER_ID)
Run Code Online (Sandbox Code Playgroud)

问题在于,当客户确实有位置时,它不返回具有位值数据的空值的行,因此我没有得到CUSTOMERS表中包含地址的行.它给了我这样的东西:

CUSTOMER_ID LOCATION_ID地址
   1 1"新泽西"
   2"加州"

它错过了New York地址customer 1.我试过这个......

SELECT 
 CUSTOMERS.CUSTOMER_ID,
 LOCATIONS.LOCATION_ID,
 NVL(LOCATIONS.ADDRESS,CUSTOMERS.ADDRESS) ADDRESS
FROM
CUSTOMERS
 LEFT JOIN
LOCATIONS ON (CUSTOMERS.CUSTOMER_ID=LOCATIONS.CUSTOMER_ID OR LOCATIONS.CUSTOMER_ID IS NULL)
Run Code Online (Sandbox Code Playgroud)

但它给了我与第一个查询相同的结果.有没有办法返回第二个表的空记录,即使连接条件匹配?

sql oracle null join left-join

10
推荐指数
1
解决办法
4802
查看次数

ZPL - 条形码打印时丢失数字

我正在尝试使用以下ZPL和Zebra ZP 450打印机在标签上打印Code 128条形码:

^BY3^BCN,112,N^FO090,660^FD>;>89102100^FS
Run Code Online (Sandbox Code Playgroud)

我期待条形码扫描为"9102100".但是,当我扫描打印的条形码时,它显示为"910210" - 切断最后一位数字.

如果我更改了最后一位数字,它仍然会被切断.但如果我在末尾添加更多数字,例如"9102100357",则条形码正确读取为"9102100357".

为什么我在这种特殊情况下"失去"一个数字?

label barcode zpl zebra-printers barcode-printing

5
推荐指数
1
解决办法
7756
查看次数

返回Oracle中正则表达式的所有匹配项

我有一个表包含一个名为COMMANDS的VARCHAR2列.

此列中的数据是一堆难以阅读的ZPL代码,将被发送到标签打印机,在ZPL中,有几个标记形式为{TABLE.COLUMN}.

我想在COMMANDS中找到所有不同的{TABLE.COLUMN}令牌的好列表.我编写了以下正则表达式来匹配令牌格式:

SELECT REGEXP_SUBSTR(COMMANDS,'\{\w+\.\w+\}') FROM MYTABLE;
Run Code Online (Sandbox Code Playgroud)

正则表达式有效,但它只返回每行第一个匹配的标记.有没有办法返回每一行的所有正则表达式匹配?

我正在使用Oracle 11GR2.

编辑 - 以下是单行数据的一小部分 - 每行中有许多这样的行:

^FO360,065^AEN,25,10^FD{CUSTOMERS.CUST_NAME}^FS
^FO360,095^AAN,15,12^FD{CUSTOMERS.CUST_ADDR1}^FS
Run Code Online (Sandbox Code Playgroud)

所以如果这是表中唯一的一行,我想回复:

{CUSTOMERS.CUST_NAME}
{CUSTOMERS.CUST_ADDR1}
Run Code Online (Sandbox Code Playgroud)

regex sql oracle oracle11g oracle11gr2

4
推荐指数
1
解决办法
7640
查看次数