sql - 如何使用gorm从字符串中获取特定数量的字符?
问题描述
我正在使用 SQLite,例如,如果我有一个 400 个字符串的文本帖子或文章,我只想从中提取前 100 个字符以用于前端。
在第 4 行中,我从数据库中提取了最新的 5 个帖子,但我想将帖子的正文限制为前 100 个字符
func GetLatestPosts() *[]Post {
db := database.Connect()
var posts []Post
db.Limit(5).Order("created_at desc").Find(&posts)
// SELECT LEFT(body, 100) FROM posts
// db.Raw("SELECT id, title, body, tags FROM posts").Scan(&posts)
return &posts
}
我怎样才能做到这一点 ?
解决方案
您想要的是在帖子正文上使用Select
或Raw
运行substr
sqlite 函数。
像这样:
err := db.Select("id, title, substr(body, 1, 100) AS body, tags").
Limit(5).
Order("created_at DESC").
Find(&posts).
Error
// error check
或使用原始:
err := db.Raw("SELECT id, title, substr(body, 1, 100) AS body, tags FROM posts").
Scan(&posts).
Error
// error check
要记住的关键方面是确保列被命名body
,以便扫描到您的模型中像以前一样工作。
推荐阅读
- sql - 从文本字段中提取日期
- javascript - Javascript-使用 for 和 if 从数组中提取数字
- oracle - 我怎样才能避免这个错误,我已经做了一个触发器,但 DBMS 丢失了它?
- javascript - create-react-app 到网站的部分实现
- java - JavaFX 菜单栏 Windows 讲述人支持
- java - 从 Java 中的 try catch 块获取变量的问题
- react-native - React Native:重置路由,返回首页
- sql - 如何根据 SQL Server 中的行值获取列名?
- node.js - npm audit 不工作并且没有列出依赖项的描述
- java - How to detect in Java if SOAP message is MTOM