在SQLite中是否有用于反转字符串的函数?我无法在文档中找到任何内容。
谢谢!
答案 0 :(得分:9)
没有内置功能。您可以添加自定义函数,例如Python中的示例:
import sqlite3
conn = sqlite3.connect("")
conn.create_function("strrev", 1, lambda s: s[::-1])
cur = conn.cursor()
cur.execute(r''' SELECT strrev('hello, world') ''')
print(cur.fetchone()[0]) #dlrow ,olleh
答案 1 :(得分:5)
使用公用表表达式可以在SQLite中反转字符串。
WITH reverse(i, c) AS (
values(-1, '')
UNION ALL SELECT i-1, substr('dlrow olleh', i, 1) AS r FROM reverse
WHERE r!=''
) SELECT group_concat(c, '') AS reversed FROM reverse;
返回hello world
。
答案 2 :(得分:1)
我解决了存储单词反转的问题,这是我通过这个PHP脚本获得的:
class MyDB extends SQLite3
{
function __construct()
{
$dbFile = __DIR__ . '/Dictionary.sqlite';
$this->open($dbFile);
}
}
$db = new MyDB();
$db->createFunction('rev', 'strrev', 1);
$db->exec('UPDATE dict_en SET word_rev = rev(word)');
echo "done";
答案 3 :(得分:0)
Hello MartyIX ,
是的,Sqlite3有一个可以用来反转字符串的函数。
想象一下你有一个名为 myTable 的表就像这样。
_id | myField
--------------------
1 | 08641944
2 | 08950407
3 | 00250898
4 | 00498293
5 | 04502851
6 | 03146310
7 | 03146310
8 | 03146310
9 | 03146310
在这种情况下, myField 列包含8个字符的字符串。
SELECT myField,
SUBSTR(myField,-1,1)||
SUBSTR(myField,-2,1)||
SUBSTR(myField,-3,1)||
SUBSTR(myField,-4,1)||
SUBSTR(myField,-5,1)||
SUBSTR(myField,-6,1)||
SUBSTR(myField,-7,1)||
SUBSTR(myField,-8,1) 'reversed'
FROM myTable;
myField | reversed
-------------------------
08641944 | 44914680
08950407 | 70405980
00250898 | 89805200
00498293 | 39289400
04502851 | 15820540
03146310 | 01364130
03146310 | 01364130
03146310 | 01364130
03146310 | 01364130
负整数,例如SUBSTR中的 -1 (myField, -1 ,1),
告诉Sqlite从字符串中最右边的字符开始。
正整数,例如SUBSTR中的 1 (myField,-1, 1 ),
告诉Sqlite只选一个字符。
||
,例如SUBSTR(MyField的,-1,1)||
,
调用 group_concat(X)函数。
'颠倒',在SUBSTR(myField,-8,1)'颠倒',
告诉Sqlite将反向字符串放在标有颠倒的新列中。
上面的 SELECT 语句通常会放在内部 CREATE VIEW AS 语句。
CREATE VIEW reversed AS
SELECT myField,
SUBSTR(myField,-1,1)||
SUBSTR(myField,-2,1)||
SUBSTR(myField,-3,1)||
SUBSTR(myField,-4,1)||
SUBSTR(myField,-5,1)||
SUBSTR(myField,-6,1)||
SUBSTR(myField,-7,1)||
SUBSTR(myField,-8,1) 'reversed'
FROM myTable;
如果字符串长度为1000个字符,如hamstergene所示,则必须使用脚本语言来创建执行以下两个操作的函数。
也许hamstergene可以帮助你。
答案 4 :(得分:0)
正如其他人已经解释的那样,第一个参数为负的SUBSTR返回反转文本。可以将其与LENGTH一起使用,而不必依赖于知道字段的实际长度。所以:
SELECT SUBSTR(myfield , -LENGTH (myfield), LENGTH (myfield)) as inverted_myfield FROM [...]
这将返回 myfield ,但具有反向的字符串( inverted_myfield )。