如何在SQLITE中选择部分包含字符串的列

如何在SQLITE中选择部分包含字符串的列,sqlite,Sqlite,我需要搜索表中的行,并选择部分以提供的值开头的值。 我知道如何搜索模式,但我在表中有模式,而不是在值中,我不知道它是否可能。 我的问题特别像一个like,但很落后:) 例如: 如果在我的表中有值234、1567、31、3145,则提供的值为 23434我需要选择234,如果提供的值是95214,我需要返回一个空select,最后如果提供的值是314,我需要返回3145。 如果可能的话?怎么用? 谢谢通常,您会根据模式检查列的值: SELECT ... WHERE MyTable.Name LIK

我需要搜索表中的行,并选择部分以提供的值开头的值。 我知道如何搜索模式,但我在表中有模式,而不是在值中,我不知道它是否可能。 我的问题特别像一个like,但很落后:)

例如:

如果在我的表中有值234、1567、31、3145,则提供的值为 23434我需要选择234,如果提供的值是95214,我需要返回一个空select,最后如果提供的值是314,我需要返回3145。 如果可能的话?怎么用?
谢谢

通常,您会根据模式检查列的值:

SELECT ... WHERE MyTable.Name LIKE 'prefix%'
但是,LIKE的两个操作数都是字符串表达式。 您只需将列放在右侧即可:

SELECT ... WHERE '23434' LIKE MyTable.Pattern
如果列值不包括“%”,则必须添加它:

SELECT ... WHERE '23434' LIKE MyTable.Prefix || '%'
要获得最长的匹配,您必须获得比所有其他匹配都大的匹配,即添加:

... ORDER BY MyTable.Prefix DESC LIMIT 1

您是否尝试过使用
如“%somestring%”
?正常查询,如果我在B列中找到值A,则从T中选择*B,其中B类似于“A%”,但我尝试了从T中选择*A,其中“A”类似于B+“%”,因为我在字符串A中找到B中的值,但不起作用。请注意,提供的值比存储的值大,存储的值是提供的值的前缀。为什么有一行包含该值和搜索模式?你能向我们描述一下你的桌子吗?好的,在我的应用程序中,我过滤来电。用户提供各种电话号码,我需要根据号码进行筛选。现在,我过滤精确的数字,但我喜欢按起始数字过滤。例如,在我的数据库中,我存储“+34”是因为用户需要过滤所有来自西班牙的来电。当我收到来自+3432的电话时,我需要检查数据库中的号码是否是接收到的来电的前缀,以便对其进行过滤。现在,我得到一个指向数据库中所有记录的游标,然后用Java检查值,但这很慢,而且是andl。。。其中'23434'喜欢MyTable。前缀为| |'%'谢谢!