如何选择列的行,使行的大小为< = 5? 是否有对大多数/所有数据库都有效的查询?
例如。 id,first_name
仅选择名字超过10个字符的人。他们的名字太长了?
答案 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。
参见示例:
答案 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