如何使用 Doobie (scala) 动态生成 SQL 语句
How to generate SQL statements dynamically using Doobie (scala)
我有疑问:
val sql = """select
id,
clientName
from
partnerClients
where
partnerName = ?
"""
我从 excel 文件中读取了 partnerName 并为每个文件执行了 func:
case class Partner(name: String)
case class Client(id: Int, name: String)
def queryPartnerClients(partnerName: String) = Query[String, Client](sql, None).toQuery0(partnerName)
def getPartnerClients(partner: Partner): IO[Vector[Client]] = partnerClients(partner.name)
.to[Vector]
.transact(xa)
我使用了这个FAQ(如何将任意SQL字符串转换为Query/Query0)
当我从 excel 中获取合作伙伴名称时,问题是得到空结果,但是如果我在代码中指定相同的合作伙伴名称,它就会工作,例如:
def partnerClients(partnerName: String) = {
val temp = "Partner Name"
Query[String, Client](sql, None).toQuery0(temp)
}
我认为这是编码问题,我尝试修复它
def partnerClients(partnerName: String) = {
val temp = new String(partner.getBytes("Windows-1251"), "UTF-8")
Query[String, Client](sql, None).toQuery0(temp)
}
但结果是一样的——空集。
我用this answer打开日志记录,发现我发送的参数有空格。 Trim 函数修复了它
我有疑问:
val sql = """select
id,
clientName
from
partnerClients
where
partnerName = ?
"""
我从 excel 文件中读取了 partnerName 并为每个文件执行了 func:
case class Partner(name: String)
case class Client(id: Int, name: String)
def queryPartnerClients(partnerName: String) = Query[String, Client](sql, None).toQuery0(partnerName)
def getPartnerClients(partner: Partner): IO[Vector[Client]] = partnerClients(partner.name)
.to[Vector]
.transact(xa)
我使用了这个FAQ(如何将任意SQL字符串转换为Query/Query0)
当我从 excel 中获取合作伙伴名称时,问题是得到空结果,但是如果我在代码中指定相同的合作伙伴名称,它就会工作,例如:
def partnerClients(partnerName: String) = {
val temp = "Partner Name"
Query[String, Client](sql, None).toQuery0(temp)
}
我认为这是编码问题,我尝试修复它
def partnerClients(partnerName: String) = {
val temp = new String(partner.getBytes("Windows-1251"), "UTF-8")
Query[String, Client](sql, None).toQuery0(temp)
}
但结果是一样的——空集。
我用this answer打开日志记录,发现我发送的参数有空格。 Trim 函数修复了它