RIGHT() / LEFT() 函数

21
在Hiveql中是否有类似于TSQL的Right()或者Left()函数的功能呢?例如,使用RIGHT(col1,10)col1中获取前10个字符。
3个回答

37

没有rightleft函数,但你可以使用substr实现相同的功能,例如:

left(column, nchar) = substr(column, 1* nchar)

right(column, nchar) = substr(column, (-1)* nchar)

这里的nchar是字符数。


(-1)* 可以改成 -1 吗?这是一个打字错误吗? - user17242583
1
我发现我必须使用SUBSTR(column, start, num_chars),根据这里的文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions例如,substr(column, 0, 3)会返回字符串中前三个字符。 - silverdagger

9
这个有效: substr (col, -nchar) = right(col, nchar)
hive> select substr('adbcefghij',-4);
ghij
Time taken: 40.839 seconds, Fetched: 1 row(s)

为胜利而战!我已经提出了一个更新,来使用这个公式,以替换那个错误的“被接受”的答案。这个公式也比ALEKSEY NIKITOV的更简单(同时也是正确的)。感谢anonyXmous! - Ward W

6
right(column, nchar) = substr(column, (length(column)-nchar+1), nchar)

这与10个月前给出的答案几乎相同。 - Alejandro
1
差不多一样,只是这个是正确的而另一个是错误的。 - Brian Morearty
1
@BrianMorearty 那么被接受的答案应该被编辑。 - zthomas.nc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接