说,有两个表。一个包含长文本值的字段(例如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做到这一点?我不确定,因为我之前只看到过硬编码模式。 –