14

如何选择列的行以使行大小为 <= 5 ?是否有适用于大多数/所有数据库的查询?

例如。身份证,名字

仅选择名字超过 10 个字符的人。他们的名字太长了?

4

4 回答 4

22

如果您一定要使用特定的 RDBMS,那么解决方案很简单。

Use the LENGTH function.

根据您的数据库,长度函数可以是 LEN、Length、CarLength。只需搜索谷歌就可以了。

根据你的问题

如何选择列的行以使行大小为<= 5?是否有适用于大多数/所有数据库的查询?

解决办法可以

SELECT * FROM TableName WHERE LENGTH(name) <= 5

如果您想要可以与几乎所有数据库一起使用的东西,并且我假设您要获取的字符串的长度非常小。示例 5 或 8 个字符,然后您可以使用类似这样的内容

 SELECT * 
 FROM tab
 WHERE
    colName LIKE ''
 OR colName LIKE '_' 
 OR colName LIKE '__'
 OR colName LIKE '___'
 OR colName LIKE '____'
 OR colName LIKE '_____'

这适用于几乎所有主要的 DBMS。

见例子:

SQL 服务器

MySQL

甲骨文

Postgre SQL

SQLite

于 2013-06-12T11:51:18.030 回答
14

假设您想要字符长度,函数名称因 RDBMS 而异;

MySQL:CHAR_LENGTH()
甲骨文:长度()
SQL 服务器:LEN()
PostgreSQL:CHAR_LENGTH() 或 LENGTH()
SQLite:长度()

如果您想要以字节为单位的长度,那就是;

MySQL:长度()
甲骨文:LENGTHB()
SQL 服务器:DATALENGTH()
PostgreSQL:OCTET_LENGTH()

例如,在 MySQL 中选择名称超过 10 个字符的所有行将是:

SELECT * FROM myTable WHERE CHAR_LENGTH(name) > 10;
于 2013-06-12T09:42:04.603 回答
3

在 sql 服务器 TSQL 中,您可以使用 len 函数。例如

SELECT * FROM people WHERE LEN(firstname) > 10

其中 people 是表名。

在 mysql 中,该函数称为“长度”而不是 len。

于 2013-06-12T09:33:48.180 回答
0

如果您从 Java 调用,则有可移植的JDBC 转义函数:

select {fn length('some text expression')} from sometable
于 2018-11-27T17:16:18.690 回答