如何选择一定长度的数据项?

时间:2013-06-12 09:30:48

标签: sql

如何选择列的行,使行的大小为< = 5? 是否有对大多数/所有数据库都有效的查询?

例如。 id,first_name

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

4 个答案:

答案 0 :(得分:13)

如果您必须使用特定的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 Server

MySQL

Oracle

Postgre SQL

SQLite

答案 1 :(得分:11)

假设您想要字符长度,函数名称随RDBMS而变化;

MySQL:CHAR_LENGTH()
甲骨文:LENGTH() SQL Server:LEN()
PostgreSQL:CHAR_LENGTH() or LENGTH()
SQLite:LENGTH()

如果你想要以字节为单位的长度,那就改为了;

MySQL:LENGTH()
甲骨文:LENGTHB() SQL Server:DATALENGTH()
PostgreSQL:OCTET_LENGTH()

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

SELECT * FROM myTable WHERE CHAR_LENGTH(name) > 10;

答案 2 :(得分:2)

在sql server TSQL中你可以使用len函数。 例如

SELECT * FROM people WHERE LEN(firstname) > 10

人们是桌名。

在mysql中,该函数被称为&#34;长度#34;而不是len。

答案 3 :(得分:0)

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

select {fn length('some text expression')} from sometable