格式化包含'%'golang的字符串

时间:2018-11-27 14:05:11

标签: string go string-formatting qsqlquery

我有一个看起来像这样的SQL查询:

https://domainname.com/api/200334234224 (Works)

https://domainname.com/api/010334235667 (Doesn't Work)

但是我实际上有兴趣用格式字符串(%s)替换'org_name'。
我正在尝试做这样的事情:

SELECT name FROM sessions WHERE name ILIKE 'org_name.%';

但是go似乎不喜欢它,因为写%'作为格式字符串无效。
我知道我可以用这种方法解决它:

query := fmt.Sprintf("SELECT name FROM sessions WHERE name ILIKE '%s.%'", "org_name2")


但是,我宁愿不这样做,因为此处的变量仅是org_name。
有解决办法吗?
谢谢!

2 个答案:

答案 0 :(得分:10)

fmt包中所述,文字%可以由%%表示为printf格式的字符串:

query := fmt.Sprintf("SELECT name FROM sessions WHERE name ILIKE '%s.%%'", orgName)

但是请注意,您应该 从不,永远 用这种方式构建SQL查询!您可能会公开接受SQL injection攻击。相反,您应该传递参数化的参数:

query := "SELECT name FROM sessions WHERE name ILIKE ?"
rows, err := db.Query(query, orgName + ".%")

答案 1 :(得分:1)

在执行过程中,它只是fmt.Printf("%s is how you write a %%", "This")

https://play.golang.org/p/RIJKRADYzCk