Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何编写查询以获取数据并跳过sql中特殊记录的4个首字母_Database_Sqlite_Android Sqlite - Fatal编程技术网

Database 如何编写查询以获取数据并跳过sql中特殊记录的4个首字母

Database 如何编写查询以获取数据并跳过sql中特殊记录的4个首字母,database,sqlite,android-sqlite,Database,Sqlite,Android Sqlite,我无法从数据库中读取数据。有人能帮我写一个适合我的查询吗 Select name1, name2 if (name2 start with "abcd" or "bcda" or "dasd" then skip 4 first Characters ) From TableName where name2 like 'Input' 让我们看一看问题:我想获得name2的数据。类似于“输入”的数据,但首先我想检查名称2是否以abcd开头,然后我不想显示名称2的前4个字符 编辑:我忘了

我无法从数据库中读取数据。有人能帮我写一个适合我的查询吗

Select name1, name2 
   if (name2 start with "abcd" or "bcda" or "dasd" then skip 4 first Characters )
From TableName 
where name2 like 'Input'
让我们看一看问题:我想获得name2的数据。类似于“输入”的数据,但首先我想检查名称2是否以abcd开头,然后我不想显示名称2的前4个字符

编辑:我忘了我应该检查两个不同的参数,然后我添加了一个or,而且我正在为android开发一个应用程序并使用SQlite

我希望我能解释清楚,同时为我的英语感到抱歉

编辑2:我对代码还有问题。它不能很好地显示4个首字母,但问题是它返回这4个首字母。此代码是单词词典的搜索部分。我附上一张照片,让你看清楚


这是如何编码您所要求的内容

Select name1, name2, 
  case when left(name2,4) = 'abcd' 
       then substring(name2,4) 
       else name2 
  end as name2
From TableName 
where name2 like 'Input'

如果您的RDMBS支持regexp函数,如regex_replace,那么这很简单:

regexp_replace(name2, '^(abcd)|(bcda)', '') as name2
这将适用于Oracle、Postgres、MySQL 8.0、PrestoDB、BigQuery、DB2、Sybase,可能还有更多我现在没有想到的东西

在SQLIte中,可以使用字符串函数和大小写表达式:

select 
    name1,
    case when substr(name2, 1, 4) in ('abcd', 'bcda')
        then substr(name2, 5, length(name2) - 4) 
        else name2
    end as name2
from mytable
where name2 = 'input'

注意:name2类似于'input'相当于name2='input',因为没有通配符起作用

用您正在使用的数据库标记您的问题。示例数据和所需结果非常有用,特别是当英语不是您的第一语言时。您的case子句也可以在MS T-SQL中编码为iifleftname2='abcd',substringname2,4,name2。@DavidRTribble-true-如果可能的话,我试图使用标准SQL。@Hogan感谢您的回答,但我无法在sqlite上通过此查询获取数据。我还编辑了我的问题,你能再检查一遍吗?@Hogan你能帮我解决这个问题吗?我编辑了问题并添加了新信息。thankserr它是如何改变的——仅仅是sqlite@Shayegan?@Hogan:补充道!感谢您的回复,我正在使用sqlite,我不知道它是否支持regex_替换。由于我是新手,我需要完整的代码:@Shayegan:我在回答中添加了一个sqlite解决方案。我可以在一行中编写所有代码吗?我还为check 2或添加了另外两个参数。怎么可能?感谢名字2喜欢“输入”,它工作得很好。谢谢
select 
    name1,
    case when substr(name2, 1, 4) in ('abcd', 'bcda')
        then substr(name2, 5, length(name2) - 4) 
        else name2
    end as name2
from mytable
where name2 = 'input'