我目前正在使用查询,但有时它不会更新所有字段。 我需要一个解决方法。有人能帮助我吗?
update table1
set number =
(
select substring(number from offset)
from table2
where strpos(number,prefix) = '1'
order by length(prefix)
desc limit '1'
) ;
表1:
number
----------
1001123456
表2:
prefix | offset
-------+-------
1001 | 5
我的目标,希望是只检索 substring(在本例中为table1中的每一行的“123456”) 与table2中的特定前缀匹配。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
实际上您不需要offset
字段。
表1:
+------------+
| NUMBER |
+------------+
| 1001123456 |
| 10012222 |
| 200244444 |
| 2003666 |
+------------+
表2:
+--------+
| PREFIX |
+--------+
| 1001 |
| 20036 |
+--------+
<强>查询:强>
select number, prefix,
cast(
substring(cast(t1.number as text),
char_length(cast(t2.prefix as text)) + 1)
as integer) as suffix
from t1
join t2 on cast(t2.prefix as text) =
left(cast(t1.number as text),
char_length(cast(t2.prefix as text)))
<强>结果:强>
+------------+--------+--------+
| NUMBER | PREFIX | SUFFIX |
+------------+--------+--------+
| 1001123456 | 1001 | 123456 |
| 10012222 | 1001 | 2222 |
| 2003666 | 20036 | 66 |
+------------+--------+--------+