我有一个看起来像这样的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。
有解决办法吗?
谢谢!
答案 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")