当前位置: 首页 > 面试题库 >

查询子串形成

牟华翰
2023-03-14
问题内容

我想使用SQL来处理01字符串的一部分abcd_01。对此的查询应该是什么,_变化之前的长度在哪里?也就是说,它可能是abcde_01ab_01。基本上,我想加入_


问题答案:

这是有关SQL与各种扩展之间如何具有相似功能的示例之一,但是它们之间的差异足以使您无法保证所有数据库之间的可移植性。

使用PostgreSQL语法(未提及模式匹配)的SUBSTRING关键字是ANSI-99。为什么这花了他们这么长时间,我不知道…

您需要解决的问题是获取现有列值的子字符串,因此您需要知道数据库子字符串函数被调用了什么。

甲骨文

SELECT SUBSTR('abcd_01', -2) FROM DUAL

Oracle没有RIGHT函数,实际上它只是子字符串函数的包装器。但是Oracle的SUBSTR确实允许您指定一个负数,以便以相反的方式处理字符串(以开头结尾)。

SQL服务器

两个选项-SUBSTRING和RIGHT:

SELECT SUBSTRING('abcd_01', LEN('abcd_01') - 1, 2)
SELECT RIGHT('abcd_01', 2)

为了简洁起见,RIGHT是理想的选择。但是对于可移植性而言,SUBSTRING是更好的选择…

的MySQL

与SQL Server一样,三个选项-SUBSTR,SUBSTRING和RIGHT:

SELECT SUBSTR('abcd_01', LENGTH('abcd_01') - 1, 2)
SELECT SUBSTRING('abcd_01', LENGTH('abcd_01') - 1, 2)
SELECT RIGHT('abcd_01', 2)

PostgreSQL的

PostgreSQL只有SUBSTRING:

 SELECT SUBSTRING('abcd_01' FROM LENGTH('abcd_01')-1 for 2)

…但是它确实支持有限的模式匹配,您可以看到其他地方不支持这种模式。

SQLite的

SQLite仅支持SUBSTR:

SELECT SUBSTR('abcd_01', LENGTH('abcd_01') - 1, 2)

结论

如果可用,请使用RIGHT,而如果需要将查询移植到其他数据库,则SUBSTR /
SUBSTRING会更好,因此其他人可以清楚知道正在发生的事情,并且应该更容易找到等效的功能。



 类似资料:
  • 我正在使用Laravel和它提供的雄辩的ORM,但我正在努力选择我需要的数据。我有两种型号 我该怎么做?

  • Nginx 子请求是一种非常强有力的方式,它可以发起非阻塞的内部请求访问目标 location。目标 location 可以是配置文件中其他文件目录,或 任何 其他 nginx C 模块,包括 ngx_proxy、ngx_fastcgi、ngx_memc、ngx_postgres、ngx_drizzle,甚至 ngx_lua 自身等等 。 需要注意的是,子请求只是模拟 HTTP 接口的形式, 没有

  • 首先构造子查询SQL,可以使用下面三种的方式来构建子查询。 使用fetchSql方法 fetchSql方法表示不进行查询而只是返回构建的SQL语句,并且不仅仅支持select,而是支持所有的CURD查询。 $subQuery = Db::table('think_user') ->field('id,name') ->where('id', '>', 10) ->fetch

  • 问题内容: 对于开发人员何时使用联接而不是子查询是否有经验法则还是相同的? 问题答案: 取决于RDBMS。您应该比较两个查询的执行计划。 根据我对Oracle 10和11的经验,执行计划始终是相同的。

  • 问题内容: 我在使用Hibernate创建子查询时遇到问题。不幸的是Subqueries类几乎是完全没有文档的,因此我绝对不知道如何将以下SQL转换为Hibernate Criteria: 我希望以下内容能够“正常工作”: 但不幸的是,事实并非如此。因此,看来我实际上必须使用Subqueries类来创建Criteria。但是我无法通过Google找到一个合理的例子,因此我不得不在这里提出要求。 问

  • 主要内容:1.带有Select语句的子查询,2.带有INSERT语句的子查询,3.带有UPDATE语句的子查询,4.带有DELETE语句的子查询子查询是另一个SQL查询中的查询,并嵌入在子句中。 重要规则: 子查询可以放在许多SQL子句中,如子句,子句,子句。 可以将子查询与,,,语句以及,,, ,,,等运算符一起使用。 子查询是另一个查询中的查询。外部查询称为主查询,内部查询称为子查询。 子查询位于比较运算符的右侧。 子查询括在括号中。 在子查询中,不能使用命令。 但命令可用于执行与命令相同的