Select conditionSQL 列中的前三个字符串和后三个字符串
Select first and last three strings from column for conditionSQL
我的目标是 select 所有以与第一行相同的 3 个字符串开始和结束的列。
在这种情况下很简单,因为 CONCAT 等于 'SCLMIA'
AND CONCAT(origin, destination) = 'SCLMIA'
AND ((flight_path LIKE '%SCL%' AND flight_path LIKE '%MIA%')
但现在的难点在于多个字符串。
AND CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ','SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO')
AND (**here I need to replicate the same as above.**)
我读到它可以与 SUBSTRING, LEFT AND RIGHT
select 三个第一个和最后一个字符串的函数一起使用,但我不知道该怎么做。
尝试过这个,但失败了:
AND (flight_path LIKE '%' + SUBSTR(flight_path,3, LENGTH(flight_path) - 4) + '%')
需要注意的是,它是一个条件链,这就是为什么以 AND 开头的原因。
编辑:
Image: Sample of data single path 'SCLMIA'
它来自 Bigquery。
我想这就是你想要做的:
SELECT *
FROM
flight_paths
WHERE
CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ', 'SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO')
AND RIGHT(flight_path, 3) = origin
AND LEFT(flight_path, 3) = destination
这里有一个 db-fiddle 演示了答案:
https://www.db-fiddle.com/f/vUZ4HL4NC9xaBBZpwTYNcR/0
我的目标是 select 所有以与第一行相同的 3 个字符串开始和结束的列。 在这种情况下很简单,因为 CONCAT 等于 'SCLMIA'
AND CONCAT(origin, destination) = 'SCLMIA'
AND ((flight_path LIKE '%SCL%' AND flight_path LIKE '%MIA%')
但现在的难点在于多个字符串。
AND CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ','SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO')
AND (**here I need to replicate the same as above.**)
我读到它可以与 SUBSTRING, LEFT AND RIGHT
select 三个第一个和最后一个字符串的函数一起使用,但我不知道该怎么做。
尝试过这个,但失败了:
AND (flight_path LIKE '%' + SUBSTR(flight_path,3, LENGTH(flight_path) - 4) + '%')
需要注意的是,它是一个条件链,这就是为什么以 AND 开头的原因。
编辑:
Image: Sample of data single path 'SCLMIA' 它来自 Bigquery。
我想这就是你想要做的:
SELECT *
FROM
flight_paths
WHERE
CONCAT(origin, destination) IN ('SCLMIA', 'SCLIQQ', 'SCLMAD', 'LIMCUZ', 'BOGMDE', 'FORGRU', 'SDUCGH', 'SCLGRU', 'BOGLIM', 'GYEUIO')
AND RIGHT(flight_path, 3) = origin
AND LEFT(flight_path, 3) = destination
这里有一个 db-fiddle 演示了答案: https://www.db-fiddle.com/f/vUZ4HL4NC9xaBBZpwTYNcR/0