說,有兩個表。一個包含長文本值的字段(例如foobarbaz
),另一個包含較短的值(foobar
和someothertext
)。我想從兩個表中檢索具有以下條件的值:文本不能相等,但長字符串的開頭必須與短字符串匹配。 Postgres有沒有一種(整潔的)方式來做到這一點?提前致謝。比較PostgreSQL中的文本值
1
A
回答
1
如何:
SELECT <whatever>
FROM <your tables>
WHERE one_field <> the_other_field
AND position(the_other_field in one_field) = 1;
2
正如其他答案所說,「位置」可以使用...但我會使用正則表達式。
postgres=> create database test;
CREATE DATABASE
postgres=> \c test
You are now connected to database "test".
test=> create table long (long varchar);
CREATE TABLE
test=> create table short (short varchar);
CREATE TABLE
test=> insert into long values ('foobarbaz');
INSERT 0 1
test=> insert into long values ('qfoobarbaz');
INSERT 0 1
test=> insert into long values ('now this is a long text');
INSERT 0 1
test=> insert into short values ('foobar');
INSERT 0 1
test=> insert into short values ('someothertext');
INSERT 0 1
test=> select long.long from long join short on long.long <> short.short and long.long ~ ('^' || short.short);
long
-----------
foobarbaz
(1 row)
警告,如果它包含正則表達式的東西,則可能必須轉義爲short。
(後編輯) - 這是它會怎樣看使用LIKE(未測試)時,如:
select long.long
from long
join short on
long.long <> short.short and
long.long LIKE (short.short || '%');
相關問題
- 1. 在PostgreSQL 8.4和9.1上比較文本
- 2. 如何比較PostgreSQL中列的值?
- 3. 比較文本文件中的值
- 4. Postgresql WAL archive_command文件比較
- 5. 文本框比較值
- 6. 比較PostgreSQL中的數組
- 7. 用於比較(PostgreSQL中)
- 8. 比較Unix中的文本
- 9. 文本比較
- 10. 比較數據postgresql
- 11. C#比較多個文本框的值
- 12. 將特定值與文本文件中的值進行比較
- 13. 比較Unix中兩個文本文件的比較函數
- 14. 比較java中Postgresql中的timestamp日期
- 15. 如何比較數據庫中的值與文本框的值
- 16. FCKEditor中的文本版本比較
- 17. 比較反應本機中的文本
- 18. XmlPullParser文本比較
- 19. 比較文本框值FLOAT sql
- 20. jQuery - 比較值和顏色文本
- 21. PostgreSQL中的數組位置比較
- 22. 在rails for postgresql中的時間比較
- 23. 比較PostgreSQL中的字符串
- 24. 比較Flex中的文本文件
- 25. PostgreSQL和C++ - 比較日期
- 26. PostgreSQL utf8字符比較
- 27. Derby vs PostgreSql性能比較
- 28. Hibernate postgresql比較日期
- 29. PostgreSQL數據比較工具
- 30. 將PHP變量與文本文件中的值進行比較
謝謝,這正是我需要的。 '1'是這裏的第一個字符嗎? –
是的,1是第一場比賽的指數。如果不匹配,position()將返回0。 – dslh
難道你不知道是否有辦法用LIKE做到這一點?我不確定,因爲我之前只看到過硬編碼模式。 –